Twitterリミッ
https://support.twitter.com/articles/249071-twitter-apidm
現在のTwitterリミット
現時点でのアカウント毎の技術的なリミットは以下の通りです。
ダイレクトメッセージ:250件/1日
ツイート:1,000件/1日。1日あたりのリミットは、更に細かい1時間に2回間隔のリミットに分かれます。リツイートも、ツイートとして数に考慮されます。
登録メールアドレスの変更:4回/1時間
フォロー(1日):1,000件/1日。これはあくまでも技術的なリミットであり、これ以外に過剰なフォローを禁止するルールがあります。フォローリミットについての詳細は、「フォローに関するルールと留意点」をご覧ください。
フォロー(アカウント毎):2,000件を超えるフォローは、アカウント毎の特定の比率に基づき制限されます。詳細は、「フォローに関するルールと留意点」をご覧ください。
これらのリミットは、ウェブ、モバイル、電話、API等を含む、すべてのデバイスからの操作を含みます。すべてのサードパーティのアプリケーションからのAPIリクエストは、1時間毎のAPIリミットとは別にトラックされます。アカウントを複数のサードパーティアプリケーションでご利用の場合は、APIリミットにかかりやすくなりますことご理解ください。詳細は「APIレートリミット」をご覧ください。
これらのリミットは、サイト利用が多い期間中に一時的に下げる場合があります。その場合は、Twitterステータスブログでご案内致します
2013年11月4日月曜日
2013年10月1日火曜日
GET friendships/lookup
<?php
include_once('../oauth/start.php');
/*
Friends & Followers
GET friendships/lookup
https://dev.twitter.com/docs/api/1.1/get/friendships/lookup
HTTP Methods GET
http://www.tryphp.net/2012/01/24/phpapptwitter-friendships_lookup/
*/
echo '<pre>';
$apiurl='https://api.twitter.com/1.1/friendships/lookup.json';
$HTTP_Methods='GET';
$paras['screen_name']='';
$paras['user_id']=rawurlencode('783214,6253282');
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
//var_dump($x->send_curl());
print_r($x->send_curl());
?>
例
include_once('../oauth/start.php');
/*
Friends & Followers
GET friendships/lookup
https://dev.twitter.com/docs/api/1.1/get/friendships/lookup
HTTP Methods GET
http://www.tryphp.net/2012/01/24/phpapptwitter-friendships_lookup/
*/
echo '<pre>';
$apiurl='https://api.twitter.com/1.1/friendships/lookup.json';
$HTTP_Methods='GET';
$paras['screen_name']='';
$paras['user_id']=rawurlencode('783214,6253282');
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
//var_dump($x->send_curl());
print_r($x->send_curl());
?>
例
Array ( [0] => stdClass Object ( [name] => Twitter [screen_name] => twitter [id] => 783214 [id_str] => 783214 [connections] => Array ( [0] => none ) ) [1] => stdClass Object ( [name] => Twitter API [screen_name] => twitterapi [id] => 6253282 [id_str] => 6253282 [connections] => Array ( [0] => none ) ) )
配列を利用する;
$us=array('159536039,1185244459,1034053130,748788386,780785840,177437663,565343646,805594118'); $paras['user_id']=rawurlencode(implode(',',$us));
2013年9月29日日曜日
Twitter Errors
[errors] => sharing is not permissible for this status (Share validations failed)
stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [code] => 195 [message] => Missing or invalid url parameter. ) ) )
stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [message] => Bad Authentication data [code] => 215 ) ) )
stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [code] => 25 [message] => Query parameters are missing. ) ) )
stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [code] => 158 [message] => You can't follow yourself ) ) )
stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [message] => Sorry, that page does not exist [code] => 34 ) ) )
stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [message] => Rate limit exceeded [code] => 88 ) ) )
POST statuses/destroy/:id
<?php
include_once('../oauth/start.php');
/*
Twitter
POST statuses/destroy/:id
https://dev.twitter.com/docs/api/1.1/post/statuses/destroy/%3Aid
https://api.twitter.com/1.1/statuses/destroy/:id.json
HTTP Methods POST
*/
echo '<pre>';
$apiurl='https://api.twitter.com/1.1/statuses/destroy/382527698498621440.json';
$HTTP_Methods='POST';
$paras['id']='';
$paras['trim_user']='true';
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
//var_dump($x->send_curl());
print_r($x->send_curl());
?>
例
include_once('../oauth/start.php');
/*
POST statuses/destroy/:id
https://dev.twitter.com/docs/api/1.1/post/statuses/destroy/%3Aid
https://api.twitter.com/1.1/statuses/destroy/:id.json
HTTP Methods POST
*/
echo '<pre>';
$apiurl='https://api.twitter.com/1.1/statuses/destroy/382527698498621440.json';
$HTTP_Methods='POST';
$paras['id']='';
$paras['trim_user']='true';
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
//var_dump($x->send_curl());
print_r($x->send_curl());
?>
例
stdClass Object ( [geo] => [entities] => stdClass Object ( [urls] => Array ( ) [hashtags] => Array ( ) [user_mentions] => Array ( ) ) [user] => stdClass Object ( [id] => 371259452 [id_str] => 371259452 ) [in_reply_to_user_id] => [contributors] => [place] => [retweet_count] => 0 [source] => ツイッターの種 [in_reply_to_status_id_str] => [coordinates] => [retweeted] => [id] => 3.82527698499E+17 [in_reply_to_user_id_str] => [in_reply_to_status_id] => [truncated] => [in_reply_to_screen_name] => [created_at] => Tue Sep 24 15:31:25 +0000 2013 [id_str] => 382527698498621440 [text] => 福島県漁連 試験操業を再開へ [favorited] => )
GET statuses/retweets/:id
$apiurl='https://api.twitter.com/1.1/statuses/retweets/373439054957670401.json';
$HTTP_Methods='GET';
$paras['id']=''; //id.json
$paras['count']='1';
$paras['trim_user']='true';
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
//var_dump($x->send_curl());
print_r($x->send_curl());
例
$HTTP_Methods='GET';
$paras['id']=''; //id.json
$paras['count']='1';
$paras['trim_user']='true';
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
//var_dump($x->send_curl());
print_r($x->send_curl());
例
Array ( [0] => stdClass Object ( [created_at] => Sun Sep 29 01:37:32 +0000 2013 [id] => 3.84129784651E+17 [id_str] => 384129784650801152 [text] => RT @masason: 被災地高校生の留学支援「TOMODACHIリーダーシップ・プログラム」に参加した100人が無事帰国。米国での学びと被災地の現状を9/1(日)13:30~アップルストア銀座にて報告します。ぜひ高校生の生の声を聞きに来て下さい。 [source] => Twitter for iPhone [truncated] => [in_reply_to_status_id] => [in_reply_to_status_id_str] => [in_reply_to_user_id] => [in_reply_to_user_id_str] => [in_reply_to_screen_name] => [user] => stdClass Object ( [id] => 118879992 [id_str] => 118879992 ) [geo] => [coordinates] => [place] => [contributors] => [retweeted_status] => stdClass Object ( [created_at] => Fri Aug 30 13:36:23 +0000 2013 [id] => 3.73439054958E+17 [id_str] => 373439054957670401 [text] => 被災地高校生の留学支援「TOMODACHIリーダーシップ・プログラム」に参加した100人が無事帰国。米国での学びと被災地の現状を9/1(日)13:30~アップルストア銀座にて報告します。ぜひ高校生の生の声を聞きに来て下さい。 [source] => TwitRocker2 for iPad [truncated] => [in_reply_to_status_id] => [in_reply_to_status_id_str] => [in_reply_to_user_id] => [in_reply_to_user_id_str] => [in_reply_to_screen_name] => [user] => stdClass Object ( [id] => 99008565 [id_str] => 99008565 ) [geo] => [coordinates] => [place] => [contributors] => [retweet_count] => 247 [favorite_count] => 104 [entities] => stdClass Object ( [hashtags] => Array ( ) [symbols] => Array ( ) [urls] => Array ( ) [user_mentions] => Array ( ) ) [favorited] => [retweeted] => [lang] => ja ) [retweet_count] => 247 [favorite_count] => 0 [entities] => stdClass Object ( [hashtags] => Array ( ) [symbols] => Array ( ) [urls] => Array ( ) [user_mentions] => Array ( [0] => stdClass Object ( [screen_name] => masason [name] => 孫正義 [id] => 99008565 [id_str] => 99008565 [indices] => Array ( [0] => 3 [1] => 11 ) ) ) ) [favorited] => [retweeted] => [lang] => ja ) )
Twitter API optional trim_user
$apiurl='https://api.twitter.com/1.1/statuses/user_timeline.json';
$HTTP_Methods='GET';
$paras['user_id']='';
$paras['screen_name']='';
$paras['since_id']='382527698498621440';
$paras['count']='';
$paras['page']='';
$paras['max_id']='383209620551921666';
$paras['trim_user']='true';
$paras['include_entities']='true';
$paras['exclude_replies']='true';
$paras['contributor_details']='true';
$paras['include_rts']='true';
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
//var_dump($x->send_curl());
print_r($x->send_curl());
例 trim_user = true
例 trim_user = false
$HTTP_Methods='GET';
$paras['user_id']='';
$paras['screen_name']='';
$paras['since_id']='382527698498621440';
$paras['count']='';
$paras['page']='';
$paras['max_id']='383209620551921666';
$paras['trim_user']='true';
$paras['include_entities']='true';
$paras['exclude_replies']='true';
$paras['contributor_details']='true';
$paras['include_rts']='true';
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
//var_dump($x->send_curl());
print_r($x->send_curl());
例 trim_user = true
Array ( [0] => stdClass Object ( [created_at] => Thu Sep 26 12:41:07 +0000 2013 [id] => 3.83209620552E+17 [id_str] => 383209620551921666 [text] => 楽天Vなるか、9回マー君登場 [source] => ツイッターの種 [truncated] => [in_reply_to_status_id] => [in_reply_to_status_id_str] => [in_reply_to_user_id] => [in_reply_to_user_id_str] => [in_reply_to_screen_name] => [user] => stdClass Object ( [id] => 371259452 [id_str] => 371259452 ) [geo] => [coordinates] => [place] => [contributors] => [retweet_count] => 0 [favorite_count] => 0 [entities] => stdClass Object ( [hashtags] => Array ( ) [symbols] => Array ( ) [urls] => Array ( ) [user_mentions] => Array ( ) ) [favorited] => [retweeted] => [lang] => ja ) )
例 trim_user = false
Array ( [0] => stdClass Object ( [created_at] => Thu Sep 26 12:41:07 +0000 2013 [id] => 3.83209620552E+17 [id_str] => 383209620551921666 [text] => 楽天Vなるか、9回マー君登場 [source] => ツイッターの種 [truncated] => [in_reply_to_status_id] => [in_reply_to_status_id_str] => [in_reply_to_user_id] => [in_reply_to_user_id_str] => [in_reply_to_screen_name] => [user] => stdClass Object ( [id] => 371259452 [id_str] => 371259452 [name] => 黒(hei) [screen_name] => hei6321 [location] => 日本 [description] => 始めまして、黒です。これからもTwitterで一緒にYahooApiを遊ぼう!!!. http://t.co/GbOnNHxhTg [url] => http://t.co/fw9Qmf2t3W [entities] => stdClass Object ( [url] => stdClass Object ( [urls] => Array ( [0] => stdClass Object ( [url] => http://t.co/fw9Qmf2t3W [expanded_url] => http://apiyahoo.hp2.jp/ [display_url] => apiyahoo.hp2.jp [indices] => Array ( [0] => 0 [1] => 22 ) ) ) ) [description] => stdClass Object ( [urls] => Array ( [0] => stdClass Object ( [url] => http://t.co/GbOnNHxhTg [expanded_url] => http://loto6.pa.land.to/ [display_url] => loto6.pa.land.to [indices] => Array ( [0] => 43 [1] => 65 ) ) ) ) ) [protected] => [followers_count] => 1677 [friends_count] => 1825 [listed_count] => 0 [created_at] => Sat Sep 10 14:13:36 +0000 2011 [favourites_count] => 22 [utc_offset] => 32400 [time_zone] => Tokyo [geo_enabled] => 1 [verified] => [statuses_count] => 2569 [lang] => ja [contributors_enabled] => [is_translator] => [profile_background_color] => C0DEED [profile_background_image_url] => http://abs.twimg.com/images/themes/theme1/bg.png [profile_background_image_url_https] => https://abs.twimg.com/images/themes/theme1/bg.png [profile_background_tile] => [profile_image_url] => http://a0.twimg.com/profile_images/3175354807/63967ddad879ead7bae40d178cf1ebb2_normal.png [profile_image_url_https] => https://si0.twimg.com/profile_images/3175354807/63967ddad879ead7bae40d178cf1ebb2_normal.png [profile_banner_url] => https://pbs.twimg.com/profile_banners/371259452/1357434745 [profile_link_color] => 0084B4 [profile_sidebar_border_color] => C0DEED [profile_sidebar_fill_color] => DDEEF6 [profile_text_color] => 333333 [profile_use_background_image] => 1 [default_profile] => 1 [default_profile_image] => [following] => [follow_request_sent] => [notifications] => ) [geo] => [coordinates] => [place] => [contributors] => [retweet_count] => 0 [favorite_count] => 0 [entities] => stdClass Object ( [hashtags] => Array ( ) [symbols] => Array ( ) [urls] => Array ( ) [user_mentions] => Array ( ) ) [favorited] => [retweeted] => [lang] => ja ) )
Twitter API optional since_id max_id
Twitter API optional
*
*
*
*
*
* since_id より↑のツイートを表示
* max_id より↓のツイートを表示
*
*
*
*
*
*
*
*
GET statuses/user_timeline
<?php
include_once('../oauth/start.php');
/*
Timelines
GET statuses/user_timeline
https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline
HTTP Methods GET
認証ユーザーのステータス情報(各つぶやきとそれに関連する諸々の情報)の最大3200件分から最新20件
(count引数指定で最大200件)を取得します。 screen_name や user_id のパラメータを指定すれば
他のユーザーのステータス情報を取得できます。ただしそのユーザー情報が非表示設定されていない場合か、
認証ユーザーからのフォローリクエストを承諾している場合に限ります。返されたタイムラインは、Twitter.com
にログインするときにユーザー自身が見るのと同じタイムライン情報です。このメソッドは、最大3200件まで
ステータス情報を返します。include_rts が true または 1 になっていれば、リツイートも含めて最大
3200件のステータス情報を返します。
このメソッドは、include_rtsパラメータが設定されていない限り、XMLとJSON形式において、リツイートの
つぶやきは含まれません。RSSとAtom形式の場合は、常にステータス情報にリツイートが含まれます。
http://www.tryphp.net/2012/01/10/phpapptwitter-user_timeline/
http://twinavi.jp/guide/section/twitter/glossary/メンション(Mentions)とは
*/
echo '<pre>';
$apiurl='https://api.twitter.com/1.1/statuses/user_timeline.json';
$HTTP_Methods='GET';
$paras['user_id']='';
$paras['screen_name']='masason';
$paras['since_id']='371636752991010817';
$paras['count']='';
$paras['page']='';
$paras['max_id']='';
$paras['trim_user']='true';
$paras['include_entities']='true';
$paras['exclude_replies']='';
$paras['contributor_details']='';
$paras['include_rts']='';
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
//var_dump($x->send_curl());
print_r($x->send_curl());
?>
例
include_once('../oauth/start.php');
/*
Timelines
GET statuses/user_timeline
https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline
HTTP Methods GET
認証ユーザーのステータス情報(各つぶやきとそれに関連する諸々の情報)の最大3200件分から最新20件
(count引数指定で最大200件)を取得します。 screen_name や user_id のパラメータを指定すれば
他のユーザーのステータス情報を取得できます。ただしそのユーザー情報が非表示設定されていない場合か、
認証ユーザーからのフォローリクエストを承諾している場合に限ります。返されたタイムラインは、Twitter.com
にログインするときにユーザー自身が見るのと同じタイムライン情報です。このメソッドは、最大3200件まで
ステータス情報を返します。include_rts が true または 1 になっていれば、リツイートも含めて最大
3200件のステータス情報を返します。
このメソッドは、include_rtsパラメータが設定されていない限り、XMLとJSON形式において、リツイートの
つぶやきは含まれません。RSSとAtom形式の場合は、常にステータス情報にリツイートが含まれます。
http://www.tryphp.net/2012/01/10/phpapptwitter-user_timeline/
http://twinavi.jp/guide/section/twitter/glossary/メンション(Mentions)とは
*/
echo '<pre>';
$apiurl='https://api.twitter.com/1.1/statuses/user_timeline.json';
$HTTP_Methods='GET';
$paras['user_id']='';
$paras['screen_name']='masason';
$paras['since_id']='371636752991010817';
$paras['count']='';
$paras['page']='';
$paras['max_id']='';
$paras['trim_user']='true';
$paras['include_entities']='true';
$paras['exclude_replies']='';
$paras['contributor_details']='';
$paras['include_rts']='';
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
//var_dump($x->send_curl());
print_r($x->send_curl());
?>
例
Array ( [0] => stdClass Object ( [created_at] => Fri Aug 30 13:36:23 +0000 2013 [id] => 3.73439054958E+17 [id_str] => 373439054957670401 [text] => 被災地高校生の留学支援「TOMODACHIリーダーシップ・プログラム」に参加した100人が無事帰国。米国での学びと被災地の現状を9/1(日)13:30~アップルストア銀座にて報告します。ぜひ高校生の生の声を聞きに来て下さい。 [source] => TwitRocker2 for iPad [truncated] => [in_reply_to_status_id] => [in_reply_to_status_id_str] => [in_reply_to_user_id] => [in_reply_to_user_id_str] => [in_reply_to_screen_name] => [user] => stdClass Object ( [id] => 99008565 [id_str] => 99008565 ) [geo] => [coordinates] => [place] => [contributors] => [retweet_count] => 247 [favorite_count] => 104 [entities] => stdClass Object ( [hashtags] => Array ( ) [symbols] => Array ( ) [urls] => Array ( ) [user_mentions] => Array ( ) ) [favorited] => [retweeted] => [lang] => ja ) )
GET statuses/mentions_timeline
GET statuses/mentions_timeline
<?php
include_once('../oauth/start.php');
/*
Timelines
GET statuses/mentions_timeline
https://api.twitter.com/1.1/statuses/mentions_timeline.json
HTTP Methods GET
認証ユーザーへのつぶやきを示す@ユーザー名を含むステータス情報(各つぶやきとそれに関連する諸々の情報)の最新20件
(count引数指定で最大200件)を返します。返されたタイムラインは、Twitter.com 上の mentions(@関連) の表示と
同じです。誰かが投稿した、自分へに対するつぶやき「@自分」を含む「メンションつぶやき」一覧を取得します。mentions(@関連)
の一覧と同じです。
このメソッドは最大800件までステータス情報を返します。include_rts が true または 1 になっていれば、リツイートも含めて
最大800件のステータス情報を返します。
このメソッドは、include_rtsパラメータが設定されていない限り、XMLとJSON形式において、リツイートのつぶやきは含まれません。
RSSとAtom形式の場合は、常にステータス情報にリツイートが含まれます。
http://www.tryphp.net/2012/01/05/phpapptwitter-mentions/
http://twinavi.jp/guide/section/twitter/glossary/メンション(Mentions)とは
*/
echo '<pre>';
$apiurl='https://api.twitter.com/1.1/statuses/mentions_timeline.json';
$HTTP_Methods='GET';
$paras['count']='5'; //取得結果数
$paras['page']='5'; //取得ページ数
$paras['since_id']='';
$paras['max_id']='';
$paras['trim_user']='true'; //ユーザー情報含まない
$paras['contributor_details']='';
$paras['include_entities']='false'; //実体含まない
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
print_r($x->send_curl());
?>
例
<?php
include_once('../oauth/start.php');
/*
Timelines
GET statuses/mentions_timeline
https://api.twitter.com/1.1/statuses/mentions_timeline.json
HTTP Methods GET
認証ユーザーへのつぶやきを示す@ユーザー名を含むステータス情報(各つぶやきとそれに関連する諸々の情報)の最新20件
(count引数指定で最大200件)を返します。返されたタイムラインは、Twitter.com 上の mentions(@関連) の表示と
同じです。誰かが投稿した、自分へに対するつぶやき「@自分」を含む「メンションつぶやき」一覧を取得します。mentions(@関連)
の一覧と同じです。
このメソッドは最大800件までステータス情報を返します。include_rts が true または 1 になっていれば、リツイートも含めて
最大800件のステータス情報を返します。
このメソッドは、include_rtsパラメータが設定されていない限り、XMLとJSON形式において、リツイートのつぶやきは含まれません。
RSSとAtom形式の場合は、常にステータス情報にリツイートが含まれます。
http://www.tryphp.net/2012/01/05/phpapptwitter-mentions/
http://twinavi.jp/guide/section/twitter/glossary/メンション(Mentions)とは
*/
echo '<pre>';
$apiurl='https://api.twitter.com/1.1/statuses/mentions_timeline.json';
$HTTP_Methods='GET';
$paras['count']='5'; //取得結果数
$paras['page']='5'; //取得ページ数
$paras['since_id']='';
$paras['max_id']='';
$paras['trim_user']='true'; //ユーザー情報含まない
$paras['contributor_details']='';
$paras['include_entities']='false'; //実体含まない
$x->twoauth($HTTP_Methods,$apiurl,$paras);
//$x->send_curl();
print_r($x->send_curl());
?>
例
Array ( [0] => stdClass Object ( [created_at] => Mon Aug 05 22:46:55 +0000 2013 [id] => 3.64517905771E+17 [id_str] => 364517905771139072 [text] => @hei6321 雨? [source] => Tweetbot for iOS [truncated] => [in_reply_to_status_id] => 3.6451560366E+17 [in_reply_to_status_id_str] => 364515603660292096 [in_reply_to_user_id] => 371259452 [in_reply_to_user_id_str] => 371259452 [in_reply_to_screen_name] => hei6321 [user] => stdClass Object ( [id] => 44096288 [id_str] => 44096288 ) [geo] => [coordinates] => [place] => [contributors] => [retweet_count] => 0 [favorite_count] => 0 [favorited] => [retweeted] => [lang] => ja ) [1] => stdClass Object ( [created_at] => Fri Aug 02 11:14:38 +0000 2013 [id] => 3.63256521582E+17 [id_str] => 363256521582313472 [text] => 2回目以降はほんま面倒ですよ。 RT @hei6321 [source] => web [truncated] => [in_reply_to_status_id] => 3.632558533E+17 [in_reply_to_status_id_str] => 363255853299666946 [in_reply_to_user_id] => 371259452 [in_reply_to_user_id_str] => 371259452 [in_reply_to_screen_name] => hei6321 [user] => stdClass Object ( [id] => 248336266 [id_str] => 248336266 ) [geo] => [coordinates] => [place] => [contributors] => [retweet_count] => 1 [favorite_count] => 0 [favorited] => [retweeted] => [lang] => ja ) [2] => stdClass Object ( [created_at] => Fri Aug 02 11:11:11 +0000 2013 [id] => 3.63255655404E+17 [id_str] => 363255655404023809 [text] => @hei6321 それは確かに! [source] => Tweetbot for iOS [truncated] => [in_reply_to_status_id] => 3.63253881893E+17 [in_reply_to_status_id_str] => 363253881892909057 [in_reply_to_user_id] => 371259452 [in_reply_to_user_id_str] => 371259452 [in_reply_to_screen_name] => hei6321 [user] => stdClass Object ( [id] => 44096288 [id_str] => 44096288 ) [geo] => [coordinates] => [place] => [contributors] => [retweet_count] => 0 [favorite_count] => 0 [favorited] => [retweeted] => [lang] => ja ) [3] => stdClass Object ( [created_at] => Thu Jul 25 23:30:44 +0000 2013 [id] => 3.60542665488E+17 [id_str] => 360542665487560704 [text] => @hei6321 あらっ、早起きw [source] => Tweetbot for iOS [truncated] => [in_reply_to_status_id] => 3.60538782816E+17 [in_reply_to_status_id_str] => 360538782816161792 [in_reply_to_user_id] => 371259452 [in_reply_to_user_id_str] => 371259452 [in_reply_to_screen_name] => hei6321 [user] => stdClass Object ( [id] => 44096288 [id_str] => 44096288 ) [geo] => [coordinates] => [place] => [contributors] => [retweet_count] => 0 [favorite_count] => 0 [favorited] => [retweeted] => [lang] => ja ) [4] => stdClass Object ( [created_at] => Wed Jul 24 11:50:42 +0000 2013 [id] => 3.60004108067E+17 [id_str] => 360004108066885634 [text] => @hei6321 今日も一日お疲れ様! [source] => Tweetbot for iOS [truncated] => [in_reply_to_status_id] => 3.60001300312E+17 [in_reply_to_status_id_str] => 360001300311719936 [in_reply_to_user_id] => 371259452 [in_reply_to_user_id_str] => 371259452 [in_reply_to_screen_name] => hei6321 [user] => stdClass Object ( [id] => 44096288 [id_str] => 44096288 ) [geo] => [coordinates] => [place] => [contributors] => [retweet_count] => 0 [favorite_count] => 0 [favorited] => [retweeted] => [lang] => ja ) )
2013年9月23日月曜日
Twitter Oauth 認証の流れ
1. POST oauth/request_token
https://api.twitter.com/oauth/request_token
2. GET oauth/authorize
https://api.twitter.com/oauth/authorize
3. POST oauth/access_token
https://api.twitter.com/oauth/access_token
例 http://hpapi.blogspot.jp/2013/09/post-oauthrequesttoken.html
POST oauth/request_token 成功
https://api.twitter.com/oauth/request_token
2. GET oauth/authorize
https://api.twitter.com/oauth/authorize
3. POST oauth/access_token
https://api.twitter.com/oauth/access_token
例 http://hpapi.blogspot.jp/2013/09/post-oauthrequesttoken.html
POST oauth/request_token 成功
ラベル:
OAuth,
twitterapi
2013年9月21日土曜日
POST oauth/access_token
POST oauth/access_token 成功
<?php
//error_reporting(E_ALL);
date_default_timezone_set('Asia/Tokyo');
?>
<?php
//new newlogin(oauth_consumer_key, oauth_consumer_key_secret, Callback_URL);
$x=new newlogin('**********', '*************', 'http://www.dodofei.com/oauthget.php');
if(!array_key_exists('oauth_token',$_REQUEST) and !array_key_exists('oauth_verifier',$_REQUEST)){
$x->request_token();
}else{
$x->access_token("http://www.dodofei.com");
}
?>
<?php
class newlogin{
public $debug='off';
public $Request_token_URL='https://api.twitter.com/oauth/request_token';
public $Authorize_URL='https://api.twitter.com/oauth/authorize';
public $Access_token_URL='https://api.twitter.com/oauth/access_token';
public $oauth_signature_method= 'HMAC-SHA1';
public $oauth_version= '1.0';
public $oauth_para=array();
public $oauth_consumer_key='';
public $oauth_consumer_key_secret= '';
public $oauth_token_secret= '';
public function newlogin($oauth_consumer_key, $oauth_consumer_key_secret, $Callback_URL){
$this->oauth_para['oauth_callback']=$Callback_URL;
$this->oauth_para['oauth_consumer_key']=$oauth_consumer_key;
$this->oauth_para['oauth_nonce']=md5(microtime().mt_rand());
$this->oauth_para['oauth_signature_method']=$this->oauth_signature_method;
$this->oauth_para['oauth_timestamp']=time();
$this->oauth_para['oauth_version']=$this->oauth_version;
$this->oauth_consumer_key_secret=$oauth_consumer_key_secret;
}
public function request_token(){
//request_token
$signature_key=rawurlencode($this->oauth_consumer_key_secret).'&';
$respons=$this->fun_curl($this->oauth_para, $signature_key, $this->Request_token_URL,'POST');
$requestToken = array();
foreach(explode('&',$respons) as $val){
$param = explode('=',$val);
$requestToken[$param[0]] = $param[1];
}
$this->oauth_token_secret=$requestToken['oauth_token_secret'];
header(sprintf('Location: %s?%s',$this->Authorize_URL,'oauth_token='.$requestToken['oauth_token']));
}
public function authorize(){
//authorize
header(sprintf('Location: %s?%s',$this->Authorize_URL,$respons));
}
public function access_token($hpurl){
//access_token
$signature_key=rawurlencode($this->oauth_consumer_key_secret).'&'.rawurlencode($this->oauth_token_secret);
$add_para=array();
$add_para['oauth_token']=$_GET['oauth_token'];
$add_para['oauth_verifier']=$_GET['oauth_verifier'];
$para=$this->oauth_para+$add_para;
$respons=$this->fun_curl($para, $signature_key, $this->Access_token_URL,'POST');
foreach (explode('&',$respons) as $val){
$param=explode('=',$val);
setcookie($param[0],$param[1],time()+60*60*24*30*30);
}
if($respons!='error'){
//header('Location: http://www.dodofei.com/index.php?'.$respons);
header('Location: '.$hpurl);
}
}
public function fun_curl($para, $signature_key, $url, $httptype){
//oauth_signature
ksort($para);
$temp=array();
foreach ($para as $key=>$val){
if(!empty($val)){
$temp[count($temp)]=$key.'='.rawurlencode($val);
}
}
$bas_sting=implode('&',$temp);
$signature_base_string=rawurlencode($httptype).'&'.rawurlencode($url).'&'.rawurlencode($bas_sting);
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($signature_base_string);
}
// NG $this->oauth_para['oauth_signature']=rawurlencode(base64_encode(hash_hmac('sha1',$this->signature_base_string,$this->signature_key,true)));
$para['oauth_signature']=base64_encode(hash_hmac('sha1', $signature_base_string, $signature_key, true));
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($temp);
}
//Authorization: OAuth
ksort($para);
$temp1=array();
$temp2=array();
foreach ($para as $key=>$val){
if(!empty($val)){
$temp1[count($temp1)]=$key.'="'.urlencode($val).'"';
if ($key!='oauth_callback'){
$temp2[count($temp2)]=$key.'='.urlencode(rawurldecode($val));
}
}
}
$Authorization_header='Authorization: OAuth '.implode(', ',$temp1);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp1);
}
//GET利用しない
$request_curldata=implode('&',$temp2);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp2);
}
//CURL 送信
$ch=curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($Authorization_header,'Content-Length:','Expect:','Content-Tpye:'));
//curl_setopt($ch, CURLOPT_HTTPHEADER, array($this->Authorization_header));
if($httptype=='GET'){
//GET動かない
$geturl=$url.'?'.$request_curldata;
curl_setopt($ch, CURLOPT_POSTFIELDS, $request_curldata);
curl_setopt($ch, CURLOPT_URL, $geturl);
curl_setopt($ch, CURLOPT_HTTPGET, true);
}
if($httptype=='POST'){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, $url);
}
$response_josn = curl_exec($ch);
$curlgetinfo=curl_getinfo($ch,CURLINFO_HEADER_OUT);
$curlgetinfo=curl_getinfo($ch);
curl_close($ch);
if($curlgetinfo['http_code']==200){
return $response_josn;
}else{
return 'error';
}
}
}
?>
<?php
//error_reporting(E_ALL);
date_default_timezone_set('Asia/Tokyo');
?>
<?php
//new newlogin(oauth_consumer_key, oauth_consumer_key_secret, Callback_URL);
$x=new newlogin('**********', '*************', 'http://www.dodofei.com/oauthget.php');
if(!array_key_exists('oauth_token',$_REQUEST) and !array_key_exists('oauth_verifier',$_REQUEST)){
$x->request_token();
}else{
$x->access_token("http://www.dodofei.com");
}
?>
<?php
class newlogin{
public $debug='off';
public $Request_token_URL='https://api.twitter.com/oauth/request_token';
public $Authorize_URL='https://api.twitter.com/oauth/authorize';
public $Access_token_URL='https://api.twitter.com/oauth/access_token';
public $oauth_signature_method= 'HMAC-SHA1';
public $oauth_version= '1.0';
public $oauth_para=array();
public $oauth_consumer_key='';
public $oauth_consumer_key_secret= '';
public $oauth_token_secret= '';
public function newlogin($oauth_consumer_key, $oauth_consumer_key_secret, $Callback_URL){
$this->oauth_para['oauth_callback']=$Callback_URL;
$this->oauth_para['oauth_consumer_key']=$oauth_consumer_key;
$this->oauth_para['oauth_nonce']=md5(microtime().mt_rand());
$this->oauth_para['oauth_signature_method']=$this->oauth_signature_method;
$this->oauth_para['oauth_timestamp']=time();
$this->oauth_para['oauth_version']=$this->oauth_version;
$this->oauth_consumer_key_secret=$oauth_consumer_key_secret;
}
public function request_token(){
//request_token
$signature_key=rawurlencode($this->oauth_consumer_key_secret).'&';
$respons=$this->fun_curl($this->oauth_para, $signature_key, $this->Request_token_URL,'POST');
$requestToken = array();
foreach(explode('&',$respons) as $val){
$param = explode('=',$val);
$requestToken[$param[0]] = $param[1];
}
$this->oauth_token_secret=$requestToken['oauth_token_secret'];
header(sprintf('Location: %s?%s',$this->Authorize_URL,'oauth_token='.$requestToken['oauth_token']));
}
public function authorize(){
//authorize
header(sprintf('Location: %s?%s',$this->Authorize_URL,$respons));
}
public function access_token($hpurl){
//access_token
$signature_key=rawurlencode($this->oauth_consumer_key_secret).'&'.rawurlencode($this->oauth_token_secret);
$add_para=array();
$add_para['oauth_token']=$_GET['oauth_token'];
$add_para['oauth_verifier']=$_GET['oauth_verifier'];
$para=$this->oauth_para+$add_para;
$respons=$this->fun_curl($para, $signature_key, $this->Access_token_URL,'POST');
foreach (explode('&',$respons) as $val){
$param=explode('=',$val);
setcookie($param[0],$param[1],time()+60*60*24*30*30);
}
if($respons!='error'){
//header('Location: http://www.dodofei.com/index.php?'.$respons);
header('Location: '.$hpurl);
}
}
public function fun_curl($para, $signature_key, $url, $httptype){
//oauth_signature
ksort($para);
$temp=array();
foreach ($para as $key=>$val){
if(!empty($val)){
$temp[count($temp)]=$key.'='.rawurlencode($val);
}
}
$bas_sting=implode('&',$temp);
$signature_base_string=rawurlencode($httptype).'&'.rawurlencode($url).'&'.rawurlencode($bas_sting);
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($signature_base_string);
}
// NG $this->oauth_para['oauth_signature']=rawurlencode(base64_encode(hash_hmac('sha1',$this->signature_base_string,$this->signature_key,true)));
$para['oauth_signature']=base64_encode(hash_hmac('sha1', $signature_base_string, $signature_key, true));
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($temp);
}
//Authorization: OAuth
ksort($para);
$temp1=array();
$temp2=array();
foreach ($para as $key=>$val){
if(!empty($val)){
$temp1[count($temp1)]=$key.'="'.urlencode($val).'"';
if ($key!='oauth_callback'){
$temp2[count($temp2)]=$key.'='.urlencode(rawurldecode($val));
}
}
}
$Authorization_header='Authorization: OAuth '.implode(', ',$temp1);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp1);
}
//GET利用しない
$request_curldata=implode('&',$temp2);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp2);
}
//CURL 送信
$ch=curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($Authorization_header,'Content-Length:','Expect:','Content-Tpye:'));
//curl_setopt($ch, CURLOPT_HTTPHEADER, array($this->Authorization_header));
if($httptype=='GET'){
//GET動かない
$geturl=$url.'?'.$request_curldata;
curl_setopt($ch, CURLOPT_POSTFIELDS, $request_curldata);
curl_setopt($ch, CURLOPT_URL, $geturl);
curl_setopt($ch, CURLOPT_HTTPGET, true);
}
if($httptype=='POST'){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, $url);
}
$response_josn = curl_exec($ch);
$curlgetinfo=curl_getinfo($ch,CURLINFO_HEADER_OUT);
$curlgetinfo=curl_getinfo($ch);
curl_close($ch);
if($curlgetinfo['http_code']==200){
return $response_josn;
}else{
return 'error';
}
}
}
?>
ラベル:
OAuth,
twitterapi
2013年9月20日金曜日
GET oauth/authorize 成功
GET oauth/authorize 成功
<?php
error_reporting(E_ALL);
date_default_timezone_set('Asia/Tokyo');
?>
<?php
$x=new newlogin('***************','********************','http://www.********.com');
//http://www.********.com/?oauth_token=z4MV1x5JnEyaRaq5VbpylGoZETAX6XVv5USpZJ247N8&oauth_verifier=5eFa14MMF5DWi8LK3ZsOsyMkg7WinBGwxXNvrNUqKhE
//http://www.********.com/?denied=7ejbFPRb1oZ1Z08r8XQOauRdIeh4EkLWKH0xNFI
?>
<?php
class newlogin{
public $debug='off';
public $request_type='POST';
public $oauth_para=array();
public $Request_token_URL='https://api.twitter.com/oauth/request_token';
public $Authorize_URL='https://api.twitter.com/oauth/authorize';
public $Access_token_URL='https://api.twitter.com/oauth/access_token';
public $oauth_signature_method= 'HMAC-SHA1';
public $oauth_version= '1.0';
public $Authorization_header;
public $signature_base_string;
public $oauth_signature;
public $signature_key;
public $curlgetinfo;
public $response_josn;
public $request_curldata;
public function newlogin($oauth_consumer_key,$oauth_consumer_key_secret,$Callback_URL){
$this->oauth_para['oauth_callback']=$Callback_URL;
$this->oauth_para['oauth_consumer_key']=$oauth_consumer_key;
$this->oauth_para['oauth_nonce']=md5(microtime().mt_rand());
$this->oauth_para['oauth_signature_method']=$this->oauth_signature_method;
$this->oauth_para['oauth_timestamp']=time();
$this->oauth_para['oauth_version']=$this->oauth_version;
$this->oauth_para['oauth_signature']='';
$this->signature_key=rawurlencode($oauth_consumer_key_secret).'&';
$this->oauth_set();
$this->send_curl();
}
public function oauth_set(){
//oauth_signature
ksort($this->oauth_para);
$temp=array();
foreach ($this->oauth_para as $key=>$val){
if(!empty($val)){
$temp[count($temp)]=$key.'='.rawurlencode($val);
}
}
$bas_sting=implode('&',$temp);
$this->signature_base_string=rawurlencode($this->request_type).'&'.rawurlencode($this->Request_token_URL).'&'.rawurlencode($bas_sting);
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($this->signature_base_string);
}
// NG $this->oauth_para['oauth_signature']=rawurlencode(base64_encode(hash_hmac('sha1',$this->signature_base_string,$this->signature_key,true)));
$this->oauth_para['oauth_signature']=base64_encode(hash_hmac('sha1',$this->signature_base_string,$this->signature_key,true));
$this->oauth_signature=$this->oauth_para['oauth_signature'];
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($temp);
}
//Authorization: OAuth
ksort($this->oauth_para);
$temp1=array();
$temp2=array();
foreach ($this->oauth_para as $key=>$val){
if(!empty($val)){
$temp1[count($temp1)]=$key.'="'.urlencode($val).'"';
if ($key!='oauth_callback'){
$temp2[count($temp2)]=$key.'='.urlencode(rawurldecode($val));
}
}
}
$this->Authorization_header='Authorization: OAuth '.implode(', ',$temp1);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp1);
}
//GET利用しない
$this->request_curldata=implode('&',$temp2);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp2);
}
}
public function send_curl(){
//CURL 送信
$ch=curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,true);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array($this->Authorization_header,'Content-Length:','Expect:','Content-Tpye:'));
curl_setopt($ch, CURLOPT_HTTPHEADER, array($this->Authorization_header));
if($this->request_type=='GET'){
//GET動かない
$geturl=$this->Request_token_URL.'?'.$this->request_curldata;
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->request_curldata);
curl_setopt($ch, CURLOPT_URL, $geturl);
curl_setopt($ch, CURLOPT_HTTPGET, true);
}
if($this->request_type=='POST'){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, $this->Request_token_URL);
}
$this->response_josn = curl_exec($ch);
$this->curlgetinfo=curl_getinfo($ch,CURLINFO_HEADER_OUT);
$this->curlgetinfo=curl_getinfo($ch);
curl_close($ch);
if($this->curlgetinfo['http_code']==200){
header(sprintf('Location: %s?%s',$this->Authorize_URL,$this->response_josn));
echo 'url Send';
}else{
sleep(3);
$this->oauth_set();
$this->send_curl();
echo 'url Error';
}
}
public function debug(){
//Debug
echo '<br>/////////Debut///////////////////';
echo '<br><pre>';
echo 'request_datas<br>';
//echo print_r($this->request_datas);
echo '<br><br>';
echo 'Signature base string<br>';
echo $this->signature_base_string;
echo '<br><br>';
echo 'oauth_signature<br>';
echo $this->oauth_signature;
echo '<br><br>';
echo 'Authorization header<br>';
echo $this->Authorization_header;
echo '<br><br>';
echo 'Curl data<br>';
echo $this->request_curldata;
echo '<br><br>';
echo 'Curl_getinfo<br>';
echo print_r($this->curlgetinfo);
echo '<br><br>';
echo 'JOSN data<br>';
echo print_r($this->response_josn);
echo '<br><br>';
echo '/////////Debut///////////////////';
}
}
?>
<?php
error_reporting(E_ALL);
date_default_timezone_set('Asia/Tokyo');
?>
<?php
$x=new newlogin('***************','********************','http://www.********.com');
//http://www.********.com/?oauth_token=z4MV1x5JnEyaRaq5VbpylGoZETAX6XVv5USpZJ247N8&oauth_verifier=5eFa14MMF5DWi8LK3ZsOsyMkg7WinBGwxXNvrNUqKhE
//http://www.********.com/?denied=7ejbFPRb1oZ1Z08r8XQOauRdIeh4EkLWKH0xNFI
?>
<?php
class newlogin{
public $debug='off';
public $request_type='POST';
public $oauth_para=array();
public $Request_token_URL='https://api.twitter.com/oauth/request_token';
public $Authorize_URL='https://api.twitter.com/oauth/authorize';
public $Access_token_URL='https://api.twitter.com/oauth/access_token';
public $oauth_signature_method= 'HMAC-SHA1';
public $oauth_version= '1.0';
public $Authorization_header;
public $signature_base_string;
public $oauth_signature;
public $signature_key;
public $curlgetinfo;
public $response_josn;
public $request_curldata;
public function newlogin($oauth_consumer_key,$oauth_consumer_key_secret,$Callback_URL){
$this->oauth_para['oauth_callback']=$Callback_URL;
$this->oauth_para['oauth_consumer_key']=$oauth_consumer_key;
$this->oauth_para['oauth_nonce']=md5(microtime().mt_rand());
$this->oauth_para['oauth_signature_method']=$this->oauth_signature_method;
$this->oauth_para['oauth_timestamp']=time();
$this->oauth_para['oauth_version']=$this->oauth_version;
$this->oauth_para['oauth_signature']='';
$this->signature_key=rawurlencode($oauth_consumer_key_secret).'&';
$this->oauth_set();
$this->send_curl();
}
public function oauth_set(){
//oauth_signature
ksort($this->oauth_para);
$temp=array();
foreach ($this->oauth_para as $key=>$val){
if(!empty($val)){
$temp[count($temp)]=$key.'='.rawurlencode($val);
}
}
$bas_sting=implode('&',$temp);
$this->signature_base_string=rawurlencode($this->request_type).'&'.rawurlencode($this->Request_token_URL).'&'.rawurlencode($bas_sting);
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($this->signature_base_string);
}
// NG $this->oauth_para['oauth_signature']=rawurlencode(base64_encode(hash_hmac('sha1',$this->signature_base_string,$this->signature_key,true)));
$this->oauth_para['oauth_signature']=base64_encode(hash_hmac('sha1',$this->signature_base_string,$this->signature_key,true));
$this->oauth_signature=$this->oauth_para['oauth_signature'];
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($temp);
}
//Authorization: OAuth
ksort($this->oauth_para);
$temp1=array();
$temp2=array();
foreach ($this->oauth_para as $key=>$val){
if(!empty($val)){
$temp1[count($temp1)]=$key.'="'.urlencode($val).'"';
if ($key!='oauth_callback'){
$temp2[count($temp2)]=$key.'='.urlencode(rawurldecode($val));
}
}
}
$this->Authorization_header='Authorization: OAuth '.implode(', ',$temp1);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp1);
}
//GET利用しない
$this->request_curldata=implode('&',$temp2);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp2);
}
}
public function send_curl(){
//CURL 送信
$ch=curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,true);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array($this->Authorization_header,'Content-Length:','Expect:','Content-Tpye:'));
curl_setopt($ch, CURLOPT_HTTPHEADER, array($this->Authorization_header));
if($this->request_type=='GET'){
//GET動かない
$geturl=$this->Request_token_URL.'?'.$this->request_curldata;
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->request_curldata);
curl_setopt($ch, CURLOPT_URL, $geturl);
curl_setopt($ch, CURLOPT_HTTPGET, true);
}
if($this->request_type=='POST'){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, $this->Request_token_URL);
}
$this->response_josn = curl_exec($ch);
$this->curlgetinfo=curl_getinfo($ch,CURLINFO_HEADER_OUT);
$this->curlgetinfo=curl_getinfo($ch);
curl_close($ch);
if($this->curlgetinfo['http_code']==200){
header(sprintf('Location: %s?%s',$this->Authorize_URL,$this->response_josn));
echo 'url Send';
}else{
sleep(3);
$this->oauth_set();
$this->send_curl();
echo 'url Error';
}
}
public function debug(){
//Debug
echo '<br>/////////Debut///////////////////';
echo '<br><pre>';
echo 'request_datas<br>';
//echo print_r($this->request_datas);
echo '<br><br>';
echo 'Signature base string<br>';
echo $this->signature_base_string;
echo '<br><br>';
echo 'oauth_signature<br>';
echo $this->oauth_signature;
echo '<br><br>';
echo 'Authorization header<br>';
echo $this->Authorization_header;
echo '<br><br>';
echo 'Curl data<br>';
echo $this->request_curldata;
echo '<br><br>';
echo 'Curl_getinfo<br>';
echo print_r($this->curlgetinfo);
echo '<br><br>';
echo 'JOSN data<br>';
echo print_r($this->response_josn);
echo '<br><br>';
echo '/////////Debut///////////////////';
}
}
?>
ラベル:
OAuth,
twitterapi
2013年9月19日木曜日
POST oauth/request_token 成功
POST oauth/request_token
成功、次はGET oauth/authorize
<?php
date_default_timezone_set('Asia/Tokyo');
error_reporting(E_ALL);
?>
<?php
$x=new newlogin();
$x->oauth_set();
$x->send_curl();
$x->debug();
class newlogin{
public $debug='off';
public $request_type='POST';
public $oauth_para=array();
public $oauth_consumer_key= '***********************';
public $oauth_consumer_key_secret= '******************************';
public $oauth_token= '';
public $oauth_token_secret= '';
public $Request_token_URL='https://api.twitter.com/oauth/request_token';
public $Authorize_URL='https://api.twitter.com/oauth/authorize';
public $Access_token_URL='https://api.twitter.com/oauth/access_token';
public $Callback_URL='http://www.dodofei.com';
public $oauth_signature_method= 'HMAC-SHA1';
public $oauth_version= '1.0';
public $Authorization_header;
public $signature_base_string;
public $oauth_signature;
public $signature_key;
public $curlgetinfo;
public $response_josn;
public $request_curldata;
public function newlogin(){
$this->oauth_para['oauth_callback']=$this->Callback_URL;
$this->oauth_para['oauth_consumer_key']=$this->oauth_consumer_key;
$this->oauth_para['oauth_nonce']=md5(microtime().mt_rand());
$this->oauth_para['oauth_signature_method']=$this->oauth_signature_method;
$this->oauth_para['oauth_timestamp']=time();
$this->oauth_para['oauth_version']=$this->oauth_version;
$this->oauth_para['oauth_signature']='';
$this->signature_key=rawurlencode($this->oauth_consumer_key_secret).'&';
}
public function oauth_set(){
//oauth_signature
ksort($this->oauth_para);
$temp=array();
foreach ($this->oauth_para as $key=>$val){
if(!empty($val)){
$temp[count($temp)]=$key.'='.rawurlencode($val);
}
}
$bas_sting=implode('&',$temp);
$this->signature_base_string=rawurlencode($this->request_type).'&'.rawurlencode($this->Request_token_URL).'&'.rawurlencode($bas_sting);
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($this->signature_base_string);
}
// NG $this->oauth_para['oauth_signature']=rawurlencode(base64_encode(hash_hmac('sha1',$this->signature_base_string,$this->signature_key,true)));
$this->oauth_para['oauth_signature']=base64_encode(hash_hmac('sha1',$this->signature_base_string,$this->signature_key,true));
$this->oauth_signature=$this->oauth_para['oauth_signature'];
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($temp);
}
//Authorization: OAuth
ksort($this->oauth_para);
$temp1=array();
$temp2=array();
foreach ($this->oauth_para as $key=>$val){
if(!empty($val)){
$temp1[count($temp1)]=$key.'="'.urlencode($val).'"';
//if ($key!='oauth_callback'){
$temp2[count($temp2)]=$key.'='.urlencode(rawurldecode($val));
//}
}
}
$this->Authorization_header='Authorization: OAuth '.implode(', ',$temp1);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp1);
}
//利用しない
$this->request_curldata=implode('&',$temp2);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp2);
}
}
public function send_curl(){
//CURL 送信
$ch=curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,true);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array($this->Authorization_header,'Content-Length:','Expect:','Content-Tpye:'));
curl_setopt($ch, CURLOPT_HTTPHEADER, array($this->Authorization_header));
if($this->request_type=='GET'){
//GET動かない
$geturl=$this->Request_token_URL.'?'.$this->request_curldata;
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->request_curldata);
curl_setopt($ch, CURLOPT_URL, $geturl);
curl_setopt($ch, CURLOPT_HTTPGET, true);
}
if($this->request_type=='POST'){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, $this->Request_token_URL);
}
//curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
//echo $this->response_josn = json_decode(curl_exec($ch));
echo $this->response_josn = curl_exec($ch);
$this->curlgetinfo=curl_getinfo($ch,CURLINFO_HEADER_OUT);
$this->curlgetinfo=curl_getinfo($ch);
//var_dump(curl_error($ch));
//var_dump($this->response_josn);
curl_close($ch);
}
public function debug(){
//Debug
echo '<br>/////////Debut///////////////////';
echo '<br><pre>';
echo 'request_datas<br>';
//echo print_r($this->request_datas);
echo '<br><br>';
echo 'Signature base string<br>';
echo $this->signature_base_string;
echo '<br><br>';
echo 'oauth_signature<br>';
echo $this->oauth_signature;
echo '<br><br>';
echo 'Authorization header<br>';
echo $this->Authorization_header;
echo '<br><br>';
echo 'Curl data<br>';
echo $this->request_curldata;
echo '<br><br>';
echo 'Curl_getinfo<br>';
echo print_r($this->curlgetinfo);
echo '<br><br>';
echo 'JOSN data<br>';
echo print_r($this->response_josn);
echo '<br><br>';
echo '/////////Debut///////////////////';
}
}
?>
成功、次はGET oauth/authorize
<?php
date_default_timezone_set('Asia/Tokyo');
error_reporting(E_ALL);
?>
<?php
$x=new newlogin();
$x->oauth_set();
$x->send_curl();
$x->debug();
class newlogin{
public $debug='off';
public $request_type='POST';
public $oauth_para=array();
public $oauth_consumer_key= '***********************';
public $oauth_consumer_key_secret= '******************************';
public $oauth_token= '';
public $oauth_token_secret= '';
public $Request_token_URL='https://api.twitter.com/oauth/request_token';
public $Authorize_URL='https://api.twitter.com/oauth/authorize';
public $Access_token_URL='https://api.twitter.com/oauth/access_token';
public $Callback_URL='http://www.dodofei.com';
public $oauth_signature_method= 'HMAC-SHA1';
public $oauth_version= '1.0';
public $Authorization_header;
public $signature_base_string;
public $oauth_signature;
public $signature_key;
public $curlgetinfo;
public $response_josn;
public $request_curldata;
public function newlogin(){
$this->oauth_para['oauth_callback']=$this->Callback_URL;
$this->oauth_para['oauth_consumer_key']=$this->oauth_consumer_key;
$this->oauth_para['oauth_nonce']=md5(microtime().mt_rand());
$this->oauth_para['oauth_signature_method']=$this->oauth_signature_method;
$this->oauth_para['oauth_timestamp']=time();
$this->oauth_para['oauth_version']=$this->oauth_version;
$this->oauth_para['oauth_signature']='';
$this->signature_key=rawurlencode($this->oauth_consumer_key_secret).'&';
}
public function oauth_set(){
//oauth_signature
ksort($this->oauth_para);
$temp=array();
foreach ($this->oauth_para as $key=>$val){
if(!empty($val)){
$temp[count($temp)]=$key.'='.rawurlencode($val);
}
}
$bas_sting=implode('&',$temp);
$this->signature_base_string=rawurlencode($this->request_type).'&'.rawurlencode($this->Request_token_URL).'&'.rawurlencode($bas_sting);
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($this->signature_base_string);
}
// NG $this->oauth_para['oauth_signature']=rawurlencode(base64_encode(hash_hmac('sha1',$this->signature_base_string,$this->signature_key,true)));
$this->oauth_para['oauth_signature']=base64_encode(hash_hmac('sha1',$this->signature_base_string,$this->signature_key,true));
$this->oauth_signature=$this->oauth_para['oauth_signature'];
if($this->debug=='on'){
echo '<pre>';
echo __LINE__;
print_r($temp);
}
//Authorization: OAuth
ksort($this->oauth_para);
$temp1=array();
$temp2=array();
foreach ($this->oauth_para as $key=>$val){
if(!empty($val)){
$temp1[count($temp1)]=$key.'="'.urlencode($val).'"';
//if ($key!='oauth_callback'){
$temp2[count($temp2)]=$key.'='.urlencode(rawurldecode($val));
//}
}
}
$this->Authorization_header='Authorization: OAuth '.implode(', ',$temp1);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp1);
}
//利用しない
$this->request_curldata=implode('&',$temp2);
if($this->debug=='on'){
echo '<pre><br>';
echo __LINE__;
print_r($temp2);
}
}
public function send_curl(){
//CURL 送信
$ch=curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,true);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array($this->Authorization_header,'Content-Length:','Expect:','Content-Tpye:'));
curl_setopt($ch, CURLOPT_HTTPHEADER, array($this->Authorization_header));
if($this->request_type=='GET'){
//GET動かない
$geturl=$this->Request_token_URL.'?'.$this->request_curldata;
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->request_curldata);
curl_setopt($ch, CURLOPT_URL, $geturl);
curl_setopt($ch, CURLOPT_HTTPGET, true);
}
if($this->request_type=='POST'){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, $this->Request_token_URL);
}
//curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
//echo $this->response_josn = json_decode(curl_exec($ch));
echo $this->response_josn = curl_exec($ch);
$this->curlgetinfo=curl_getinfo($ch,CURLINFO_HEADER_OUT);
$this->curlgetinfo=curl_getinfo($ch);
//var_dump(curl_error($ch));
//var_dump($this->response_josn);
curl_close($ch);
}
public function debug(){
//Debug
echo '<br>/////////Debut///////////////////';
echo '<br><pre>';
echo 'request_datas<br>';
//echo print_r($this->request_datas);
echo '<br><br>';
echo 'Signature base string<br>';
echo $this->signature_base_string;
echo '<br><br>';
echo 'oauth_signature<br>';
echo $this->oauth_signature;
echo '<br><br>';
echo 'Authorization header<br>';
echo $this->Authorization_header;
echo '<br><br>';
echo 'Curl data<br>';
echo $this->request_curldata;
echo '<br><br>';
echo 'Curl_getinfo<br>';
echo print_r($this->curlgetinfo);
echo '<br><br>';
echo 'JOSN data<br>';
echo print_r($this->response_josn);
echo '<br><br>';
echo '/////////Debut///////////////////';
}
}
?>
ラベル:
OAuth,
twitterapi
2013年9月16日月曜日
直接アクセス時にメッセージ
public $Request_token_URL='https://api.twitter.com/oauth/request_token';
public $Authorize_URL='https://api.twitter.com/oauth/authorize';
public $Access_token_URL='https://api.twitter.com/oauth/access_token';
直接アクセス時にメッセージ
https://api.twitter.com/oauth/authorize
エラーが発生しました
このページに対するリクエスト・トークンがありません。アプリケーションがTwitterアカウントを使用するかどうかを確認するために必要な特殊キーです。 送信したサイトまたはアプリケーションに戻って再度お試しください。何らかの手違いがあったかもしれません。
public $Authorize_URL='https://api.twitter.com/oauth/authorize';
public $Access_token_URL='https://api.twitter.com/oauth/access_token';
直接アクセス時にメッセージ
https://api.twitter.com/oauth/authorize
エラーが発生しました
このページに対するリクエスト・トークンがありません。アプリケーションがTwitterアカウントを使用するかどうかを確認するために必要な特殊キーです。 送信したサイトまたはアプリケーションに戻って再度お試しください。何らかの手違いがあったかもしれません。
https://api.twitter.com/oauth/request_token
Failed to validate oauth signature and token
https://api.twitter.com/oauth/access_token
Invalid request token
ラベル:
OAuth,
twitterapi
2013年9月14日土曜日
登録:
投稿 (Atom)