de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
 mintobit
mintobit
質問

Twitter OAuth 1.0。 Operaリダイレクトエラー

私は現在、ウェブサイトで働いています。いくつかの種類の承認があり、そのうちの1つは「Twitter経由」です。私はAbraham WilliamsのTwitterOAuth Libraryを使用しています。以下のスクリプトの仕組みを説明しようとします:

  1. index.php の「ログイン」ボタンを押すと、ポップアップウィンドウ(login.php)が開き、Twitterアカウントで動作するアプリケーションを認証するかどうかを尋ねます
  2. 提出すると、api.twitter.comにリダイレクトされ、$ _GETパラメータに "access token"となります。
  3. 次に、Twitterは「トークン」を承認し、Twitterアプリケーションの設定で定義されているコールバックURLに戻ります。

オペラがapi.twitter.comからコールバックURLにリダイレクトする際に問題があることを除いて、完璧に動作します。リダイレクトはまったく実行されないようです。

ここにソースがあります:

index.php

<?php
session_start();
session_destroy();
 ?>



    

        <meta charset="utf-8" />
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
        <script type="text/javascript">
        function popup(url)
        {
            var addr = document.location.href.replace('index.php','');
            popUpObj = window.open(addr + url, 'Twitter', 'width=700,height=600,menubar=yes,status=yes');

        }

        function transferdata(data)
            {
                if (data.screen_name)
                {
                    (elem = document.getElementById('tw-login')).parentNode.removeChild(elem);
                    document.getElementById('menu').innerHTML = 'Hello, ' + data.screen_name;
                }
                else
                    document.getElementById('menu').innerHTML = 'Twitter didn\'t authorize you :(';
            }
        </script>
        

    

    
        Log in
        Log out
        

login.php

<?php
session_start();
include 'twitteroauth/twitteroauth.php';
define('TWITTER_KEY', '*******');
define('TWITTER_KEY_SECRET', '*******');


$twitteroauth = new TwitterOAuth(TWITTER_KEY, TWITTER_KEY_SECRET);
$requestToken = $twitteroauth->getRequestToken();
$_SESSION['oauth_token'] = $requestToken['oauth_token'];
$_SESSION['oauth_token_secret'] = $requestToken['oauth_token_secret'];

if($twitteroauth->http_code == 200)
{
    $url = $twitteroauth->getAuthorizeURL($requestToken['oauth_token']);
    header('Location: ' . $url);
}
else
{ 
    die('Something wrong happened.');  
}

callback.php

<?php
session_start();
include 'twitteroauth/twitteroauth.php';
define('TWITTER_KEY', '*******');
define('TWITTER_KEY_SECRET', '*******');

if (!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']) && !empty($_SESSION['oauth_token_secret']))
{
    $twitteroauth = new TwitterOAuth(TWITTER_KEY, TWITTER_KEY_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
    $accessToken = $twitteroauth->getAccessToken($_GET['oauth_verifier']);
    $_SESSION['access_token'] = $accessToken;
    $userinfo = $twitteroauth->get('account/verify_credentials');
}
else
    header('Location: login.php');

?>


    

        <meta charset="utf-8">
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
        <script type="text/javascript">
        $(document).ready(SendToMain());

        function SendToMain()
        {
            if(window.opener != null || !window.opener.closed)
            {
                window.opener.transferdata(<?php echo json_encode($userinfo); ?>);
                window.close();
            }
        }
        </script>

    

    
    

session_clear.php

<?php
session_start();
session_destroy();
header('Location: index.php');
0 2011-10-27T22:08:42+00:00 2
 karlcow
karlcow
編集された質問 29日 6月 2012 в 5:11
プログラミング
twitter
php
twitter-oauth
opera
Rabotyahoff
25日 1月 2013 в 8:45
2013-01-25T20:45:52+00:00
さらに
ソース
編集
#56793513

リダイレクトURIはsslを使用しません。この問題を解決するには、代わりにhttpsを使用します。

1
0
Sinthia V
27日 10月 2011 в 10:19
2011-10-27T22:19:35+00:00
さらに
ソース
編集
#56793512

リダイレクトする前に、一部のブラウザに301や303などのステータスコードを送信する必要があります。次のようなことを試してください:

header("Status: 303");
header("Location: /home.php");
exit;
0
0
関連コミュニティ 1
PHP - 日本のコミュニティ
PHP - 日本のコミュニティ
5 ユーザー
このグループではPHPについて話します。 @vue_ja @react_ja @js_ja @angular_ja
開く telegram
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Roxana Elizabeth CASTILLO Avalos
登録済み 6日前
2
Hideo Nakagawa
登録済み 1週間前
3
Sergiy Tytarenko
登録済み 1週間前
4
shoxrux azadov
登録済み 1週間前
5
Koreets Koreytsev
登録済み 1週間前
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属