アーカイブ

‘twitter’ タグのついている投稿

PEAR::Services_Twitterのパッチ

2010 年 8 月 24 日 cockok コメントはありません

Services_Twitter_r302262.diff
7904 byte
[md5] 89930ad5cf340af7a101ed74261d4a34

修正
sendOAuthRequest()メソッドでHTTP_OAuth_Exceptionがthrowされる問題
serchメソッドでhttp://search.twitter.comを利用しない問題
blocks/createメソッドでuser_id、screen_nameを指定できない問題
blocks/destroyメソッドでuser_id、screen_nameを指定できない問題
テストでOAuthの場合sourceはアプリケーションになる問題
テストでutf8テストが二重投稿になる問題
テストでOAuthの場合オブジェクトがHTTP_OAuth_Consumer_Responseになる問題

追加
blocks/bloking/idsメソッド (call $t->blocks->blocking_ids())

$ svn export -r 302262 http://svn.php.net/repository/pear/packages/Services_Twitter/trunk Services_Twitter
$ wget http://blog.cheki.net/Services_Twitter_r302262.diff
$ cd Services_Twitter
$ patch -p0 < ../services_twitter.diff
patching file Services/Twitter.php
patching file data/api.xml
patching file tests/900-exceptions.phpt
patching file tests/910-options.phpt
patching file tests/920-utf8.phpt
patching file tests/data/utf8-2.dat
patching file tests/setup.php
カテゴリー: php タグ: , ,

PEAR::Services_Twitterをforkした

2010 年 8 月 19 日 cockok コメントはありません

Services_Twitter
以前パッチが取り込まれたけど、Basic認証でしか確認してなくて、OAuthだとDELETEメソッドで問題がでてました。
その他なんか迷走してる感じだったので、パッチ送りたいなとPEARアカウントを取得しようと申請したのですがレスポンスがないので、とりあえずgithubにぶち込んだ次第です。
バグレポートもパッチ投げるにもPEARアカウントないと半匿名な感じになるので。

cockok's Services_Twitter at master – GitHub

リリース最新は0.6.2ですが、trunkが変更されてたのでそちらをfork。
あいきゃんとすぴーくいんぐりっしゅ。
もちろん書くのも。

ちなみに、DELETEメソッドででる問題は、RFC2616に以下のようなところ。

The DELETE method requests that the origin server delete the resource identified by the Request-URI.
HTTP/1.1: Method Definitions

こっちはPEAR::HTTP_OAuthの問題。

カテゴリー: php タグ: , ,

PHPでクライアントベースのOAuth認証

2010 年 8 月 7 日 cockok コメントはありません

まさに誰得。
ブラウザベースは情報いっぱいあったんだけど、クライアントベースが見つからなかったので。
取得したaccess_token、access_token_secretを利用の仕方は下記で。
PEAR::HTTP_OAuthでxAuth – ぱんぴーまっしぐら

#!/usr/bin/env php
<?php
require_once 'HTTP/OAuth/Consumer.php';

define('CONSUMER_KEY',    'xxxxxxxxxxxxxxxxxxxx');
define('CONSUMER_SECRET', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

try {

  $http_request = new HTTP_Request2();
  $http_request->setConfig('ssl_verify_peer', false);

  $consumer_request = new HTTP_OAuth_Consumer_Request();
  $consumer_request->accept($http_request);

  $consumer = new HTTP_OAuth_Consumer(CONSUMER_KEY, CONSUMER_SECRET);
  $consumer->accept($consumer_request);

  $consumer->getRequestToken('http://twitter.com/oauth/request_token');
  $url = $consumer->getAuthorizeUrl('http://twitter.com/oauth/authorize');

  if (!$stdin = fopen('php://stdin', 'r')) {
    throw new Exception('stdin open failed');
  }

  echo 'Visit the following URL in your browser to authenticate twitter: ';
  echo $url."\n";
  echo 'Enter Twitter OAuth PIN: ';
  $pin = trim(fgets($stdin, 64));
  $consumer->getAccessToken('http://twitter.com/oauth/access_token', $pin);

  echo 'access_token: '.$consumer->getToken()."\n";
  echo 'access_token_secret: '.$consumer->getTokenSecret()."\n";

} catch (Exception $e) {

  echo $e->getMessage().' in '.$e->getFile().' line '.$e->getLine()."\n";
  exit(1);

}
カテゴリー: php タグ: , ,

ツイート非公開時のTwitterAPIの挙動

2010 年 7 月 20 日 cockok コメントはありません

ツイート非公開時のTwitterAPIの挙動が一部違う。

ツイート非公開時に、取得しようとした時、共通のエラーが返されるAPI一覧。
Retweet周りは触ったことがないので、知っている限り。

Twitter API Wiki / Twitter REST API Method: statuses user_timeline
Twitter API Wiki / Twitter REST API Method: statuses friends
Twitter API Wiki / Twitter REST API Method: statuses followers
Twitter API Wiki / Twitter REST API Method: favorites

返ってくるステータスコード

401

返ってくる文字列

Not authorized

statuses showだけ返る結果が違うので注意が必要。
Twitter API Wiki / Twitter REST API Method: statuses show

返ってくるステータスコード

403

返ってくる文字列

Sorry, you are not authorized to see this status.
カテゴリー: 日記 タグ:

Services_Twitter::sendOAuthRequest

2010 年 7 月 14 日 cockok コメントはありません

Services_Twitter::sendOAuthRequestではHTTP_Request2_Exceptionをcatchしていますが、実際はHTTP_OAuth_Exceptionをcatchしなきゃいけない。

Services_Twitterはベーシック認証周りは大丈夫だと思いますが、OAuth周りはまともにテストされてないので、結構バグあります。

カテゴリー: php タグ: ,

TwitterAPIを利用したプロフィール画像更新はcontent-typeがimage/*じゃないとコケる

2010 年 2 月 4 日 cockok コメントはありません

TwitterAPIを利用したプロフィール画像更新はcontent-typeがimage/*じゃないとコケる。
正確にはステータス200が返ってくるけど、更新されないからもっとタチが悪い。

Twitter REST API Method: account?update_profile_image
curl、rubyによるサンプルコードが載ってるけど、「Expect」ヘッダは不要。

PEAR公式のServices_Twitterを利用していたが、update_profile_imageが上手くいかない。
まだドキュメントが整理されていないので、ソースを読むかテストをみて、利用法を確認したが問題なし。
リクエストをトレースしてみたところ、content-typeが「application/octet-stream」だったのが気になったので「image/jpeg」にしてみたところ、画像の更新に成功。
PEAR::HTTP_Request2でmime-typeが取得できなかった場合、「application/octet-stream」がセットされていたというオチ。

pecl::Fileinfoかmime_content_typeを利用するようになっていたけど、?with-mime-magicとかコンパイル時に指定していなかった件。

カテゴリー: 日記 タグ:

Services_Twitter

2010 年 2 月 4 日 cockok コメントはありません

PHPでtwitterを利用する場合にはServices_Twitterが便利です。
このServices_Twitterですが、公式のPEAR公式と野良(?)版が存在します。

  1. PEAR公式 Services_Twitter

  2. 悠希@arielaさん版 Services_Twitter
    最新版はCodeRepos /lang/php/Services_Twitter – CodeRepos::Share – Trac

  3. openpear版 Services_Twitter – Openpear

openpear版はさっき見つけたけど、ちょっと使う気になれないので選択肢としてはPEAR公式か悠希さん版。
環境がCentOS5系、PHP5.1系だったので、悠希さん版を検討したのですが、CodeReposに入れられてるもののほとんど更新されておらず、APIが増えてる現状を考えると作業量的に厳しいということでPEAR公式を利用することに。
Services_Twitter-0.1.0 betaがリリースされたので日本のと比較してみた – 肉とご飯と甘いもの @ sotarok
この頃と状況は結構変わっていて、json必須ではない(でも速度の関係でpeclのjsonを利用)、HTTP_Request2でsocket通信とかになっています。
結構珍しい造りになっていて、api群はdata/api.xmlで管理されています。
pearコマンドを利用せずに利用する人は注意が必要。

カテゴリー: php タグ: ,