8


2

Twitterの認証認証に問題があり、コールバックURLを使用しています。

私はphpでコーディングしていて、twitter wiki(http://github.com/abraham/twitteroauth)で参照されているサンプルコードを使用しています。

私はそのコードを手に入れ、そして簡単なテストを試みました、そしてそれはうまくいきました。 しかし、プログラムでコールバックURLを指定したいのですが、例ではそれをサポートしていません。

だから私はすぐにパラメータを取り込むためにgetRequestToken()メソッドを修正しました、そして今それはこのようになります:

関数getRequestToken($ params =配列()){$ r = $ this-> oAuthRequest($ this-> requestTokenURL()、$ params); $ token = $ this-> oAuthParseResponse($ r); $ this-> token = new OAuthConsumer($ token ['oauth_token']、$ token ['oauth_token_secret']); $ tokenを返します。 }

私の電話はこんな感じです

$ tok = $ to-> getRequestToken(array( 'oauth_callback' => 'http://127.0.0.1/twitter_prompt/index.php'));

これが私が行った唯一の変更であり、リダイレクトは魅力のように機能しますが、その後、新しく許可されたアクセス権を使用して電話をかけようとするとエラーが発生します。 「認証できませんでした」というエラーが表示されます。 また、アプリケーションが実際にはユーザーに許可された接続に追加されることはありません。

仕様を読み、リクエストトークンを取得するときにパラメータを指定するだけでよいと思いました。 もう少しoauthとtwitterに慣れた人が私に手を貸してくれませんか。 ありがとうございました

5 Answer


7


私はこれをTwitterで修正するか、アプリケーションの設定でデフォルトのコールバックURLを指定しなかった可能性があります。これは上記の他の人が述べたように動的コールバックURLを機能させるために必要です。

いずれにせよ、リクエストトークンを取得している間にoath_callbackパラメータを渡すことでこれがうまくいきました。 私は twitter-async PHPライブラリを使用していて、ライブラリがコールバックURLを渡すように少し調整する必要がありました。

twitter-asyncを使用している場合、変更点は以下のとおりです。

パラメータとしてコールバックURLを受け取るようにgetRequestTokenおよびgetAuthenticateURL関数を変更

パブリック関数getRequestToken($ callback_url = null){$ params = empty($ callback_url)? null:array( 'oauth_callback' => $ callback_url); $ resp = $ this-> httpRequest( 'GET'、$ this-> requestTokenUrl、$ params);新しいEpiOAuthResponse($ resp)を返します。 }

パブリック関数getAuthenticateUrl($ callback_url = null){$ token = $ this-> getRequestToken($ callback_url); $ this-> authenticateUrlを返します。 '?oauth_token ='。 $ token-> oauth_token; }

そしてあなたのPHPコードからコールバックURLを渡します。

$ twitterObj  - > getAuthenticateUrl( 'http://localhost/twitter/confirm.php');


1


@Ian、twitterは現在127.0.0.1を許可しており、その他いくつかの最近の変更を加えました。

@ jtymann、私の答えをここでチェックし、それが役立つかどうかを確認

https://stackoverflow.com/questions/2940528/twitter-oauth-callback-parameter-being-ignored/3351724#3351724[Twitter oauth_callbackパラメータは無視されます!

総勘定元帳

ジングル


1


私にも401エラーを取得していました.. しかしそれは解決しました.. あなたのアプリケーションをtwitterに登録している間、あなたはコールバックURLを与える必要があります…​ http:// localhost:8080のようになります。

私はこれを使用してJavaを使用しています…​ だから私のコードは次のとおりです。String CallbackURL = "http:// localhost:8080 / tweetproj / index.jsp"; provider.retrieveRequestToken(コンシューマ、CallbackURL);

ここでtweetprojは私のプロジェクト名、index.jspはたった1つのJSPページです。

これが役立つかもしれないことを願っています…​


0


ユーザーがtwitter.comでアプリケーションを承認し、彼らがあなたのコールバックURLに戻った後、あなたはアクセストークンとリクエストトークンを交換しなければなりません。


-2


Twitterはoauth_callbackパラメータを尊重せず、登録されたアプリケーション設定で指定されたものだけを使用します。

また、コールバックで127.0.0.1またはlocalhostの名前も使用できないため、http://dev.twipler.comを設定します。これはDNSで127.0.0.1に設定されているので安全に使用できます。

http://dev.twipler.com/twitter_prompt/index.php