Home > PHP > OAuth覚え書き その2

OAuth覚え書き その2

先日のエントリー OAuth覚え書き で、エラーが発生したところで躓いたという記事を書きましたが、無事解決しました。

解決方法は下記。

SDN Projectさんのところで配布していた、oauth_test.txt(oauth_test.php)の記述に誤りがあったようです。 oauth_test.txt 78行目

    $to = new TwitterOAuth($consumer_key, $consumer_secret, $_SESSION['oauth_access_token'], $_SESSION['oauth_access_token_secret']);
    /* Run request on twitter API as user. */
    $content = $to->OAuthRequest('https://twitter.com/account/verify_credentials.xml', array(), 'GET');
    //$content = $to->OAuthRequest('https://twitter.com/statuses/update.xml', array('status' => 'Test OAuth update.'), 'POST');
    //$content = $to->OAuthRequest('https://twitter.com/statuses/replies.xml', array(), 'POST');
とあるのですが、正しくは
    $content = $to->OAuthRequest('https://twitter.com/account/verify_credentials.xml', 'GET', array());
かと思われます(これでうまく行ったので)。

PHPでは、関数名の大文字小文字は区別しないようで、$to->OAuthRequest() は、 TwitterOAuth オブジェクトの oAuthRequest を参照していることになるようです。参考(ページ下部、注意枠)

で、twitteroauth.php の 142行目~

  function oAuthRequest($url, $method, $parameters = array()) {
    if (isset($parameters['id'])) {
      $url = "{$url}/{$parameters['id']}";
      unset($parameters['id']);
    }
    if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0) {
      $url = "{$this->host}{$url}.{$this->format}";
    }
    $request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters);
    $request->sign_request($this->sha1_method, $this->consumer, $this->token);
    switch ($method) {
    case 'GET':
      return $this->http($request->to_url(), 'GET');
    default:
      return $this->http($request->get_normalized_http_url(), $method, $request->to_postdata());
    }
  }
上記の通り、 oAuthRequest の引数は、 $url, $method, $parameters = array() となってます。 ここで、$method と $parameters に入る値が逆になってしまったために、先日のようなエラーが起きたのではないかと思われます。 なので、$to->OAuthRequest() で渡している引数を、正しい順番に戻してあげることで、無事アクセストークン/シークレットの発行に至ることが出来ました。

これと同じ修正を、OAuth を利用してつぶやきを POST するサンプルプログラム(上記サイトの最後で公開)にもしてあげることで、そちらのほうも正常に動作するようになりました。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://unolabo.boo.jp/archives/2009/12/06-oauth%e8%a6%9a%e3%81%88%e6%9b%b8%e3%81%8d%e3%80%80%e3%81%9d%e3%81%ae%ef%bc%92.html/trackback
Listed below are links to weblogs that reference
OAuth覚え書き その2 from うのらぼ。

Home > PHP > OAuth覚え書き その2

Search
Feeds
Meta

Return to page top