8

Twitterのoauth認証とコールバックURLの使用に問題があります。

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

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

そこで、getRequestToken()メソッドをすばやく変更してパラメーターを取得すると、次のようになります。

function getRequestToken($params = array()) {
  $r = $this->oAuthRequest($this->requestTokenURL(), $params);
  $token = $this->oAuthParseResponse($r);
  $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
  return $token;
}

私の電話はこんな感じ

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

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

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

4

5 に答える 5

7

これはTwitterで修正されていると思います。そうでない場合は、アプリケーション設定でデフォルトのコールバックURLを指定し忘れている可能性があります。これは、上記の他のユーザーが説明したように、動的コールバックURLが機能するために必要です。

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

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

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

 public function getRequestToken($callback_url = null)
  {
    $params = empty($callback_url) ? null : array('oauth_callback'=>$callback_url);
    $resp = $this->httpRequest('GET', $this->requestTokenUrl, $params);
    return new EpiOAuthResponse($resp);
  }


 public function getAuthenticateUrl($callback_url = null)
  { 
    $token = $this->getRequestToken($callback_url);
    return $this->authenticateUrl . '?oauth_token=' . $token->oauth_token;
  }

そして、PHPコードからコールバックURLを渡します。

$twitterObj->getAuthenticateUrl('http://localhost/twitter/confirm.php');
于 2011-01-26T09:42:01.390 に答える
1

@ Ian、twitterは127.0.0.1を許可するようになり、他のいくつかの最近の変更が加えられました。

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

Twitterのoauth_callbackパラメーターは無視されます!

GL

ジングル

于 2010-07-28T10:06:56.367 に答える
1

私でさえ401エラーが発生していましたが、解決しました。アプリケーションをTwitterに登録するときに、http:// localhost:8080のようなコールバックURLを指定する必要があります。

私はJavaを使用してこれを実行しました...したがって、私のコードは次のとおりです。String CallbackURL = "http:// localhost:8080 / tweetproj / index.jsp"; Provider.retrieveRequestToken(consumer、CallbackURL);

ここで、tweetprojは私のプロジェクト名であり、index.jspは1つのjspページです...

これがあなたを助けるかもしれないことを願っています...

于 2010-11-26T12:27:32.387 に答える
0

ユーザーがtwitter.comでアプリケーションを承認し、コールバックURLに戻ったら、リクエストトークンをアクセストークンと交換する必要があります。

于 2010-11-27T09:52:54.630 に答える
-2

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

また、そのコールバックで127.0.0.1またはローカルホスト名を許可しないため、DNSで127.0.0.1用に設定されたhttp://dev.twipler.comを設定して、安全に使用できるようにしました。

http://dev.twipler.com/twitter_prompt/index.php
于 2010-03-08T12:16:36.380 に答える