twitterにrequestできず、どこが間違っているか分かりません。

183 views
Skip to first unread message

Azusa Tokkyu

unread,
Jan 17, 2013, 6:53:29 AM1/17/13
to twitter-devel...@googlegroups.com
はじめまして。初心者の特急あづさというものです。
今現在、卒業制作で自分のタイムライン上の人気ワードを一時間ごとにチェックし、
そのワードの登場回数が一定値を超えたらユーザーにDMを送信するようなシステムを制作しています。

それDM送信の部分を作っているのですが、
twitterにrequestできず、どこが間違っているか分かりません(´;ω;`)

<?php 
require_once"../php/db_value.php";
$con=mysqli_connect($DBSERVER, $DBUSER, $DBPASSWORD, $DBNAME);
mysqli_set_charset($con, "UTF8"); //文字化け防止
//データベース内のidを取り出す
$u = 0;
$a_rst = array();
$sql = "SELECT a_id FROM user";
$rst = mysqli_query($con, $sql);
while($row=mysqli_fetch_array($rst)){
$a_rst[$u] = $row["a_id"];
$u++;
}

$a_id = $a_rst[0];
$sql = "SELECT u_t,u_s FROM user WHERE a_id='$a_id'";
$rst = mysqli_query($con, $sql);
while($row=mysqli_fetch_array($rst)){
$ut = $row["user_token"];
$us = $row["user_secret"];
}

↑データベースに保存したuser_token,user_secretを取り出す部分はできてます。

//tmhOAuthを初期化
require_once"../tmhOAuth.php";
require_once '../php/config.php';

//認証
$twitter = new tmhOAuth(
array( 'consumer_key'    => CONSUMER_KEY,
   'consumer_secret' => CONSUMER_SECRET,
   'user_token' => $ut,
   'user_secret' => $us)
);
//screen_nameを取得
$twitter->request("GET", $twitter->url("1.1/account/verify_credentials"));
$s_name = json_decode($twitter->response["response"])->{"screen_name"};

var_dump($s_name);
↑がNULLで上手くできてません。
?>

Yamamoto Yusuke

unread,
Jan 17, 2013, 6:55:57 AM1/17/13
to twitter-devel...@googlegroups.com
こんばんは。

貼り付けてあるコードではDM送信をしていないようです。これがうまくいっていないコードそのものでしょうか?

また、apache(?)のエラーログに何か記録されていませんか?
-- 
山本 裕介
@yusuke

Azusa Tokkyu

unread,
Jan 17, 2013, 6:57:58 AM1/17/13
to twitter-devel...@googlegroups.com
>山本さん

DM送信以前に、スクリーンネームすら取得できていないので、短いコードで試している
という具合です。

Yamamoto Yusuke

unread,
Jan 17, 2013, 6:59:07 AM1/17/13
to twitter-devel...@googlegroups.com
verify_credentials の呼び出しがうまくできないということですね。
で、繰り返しの質問になりますがapache(?)のエラーログに何か記録されていませんか?

-- 
山本 裕介
@yusuke

Azusa Tokkyu

unread,
Jan 17, 2013, 7:04:22 AM1/17/13
to twitter-devel...@googlegroups.com
>山本さん

エラーログですが、さくらインターネットのサーバーコントロールパネルから確認できるものを見てみましたが
特にエラーは出ていません。

きり

unread,
Jan 17, 2013, 7:04:40 AM1/17/13
to twitter-devel...@googlegroups.com
このライブラリの事は知らないので的外れかもしれませんが、urlの最後に.jsonと付けなくても良いのでしょうか?

2013年1月17日木曜日 Yamamoto Yusuke yus...@mac.com:
--
-----------------------------------------------
きり
Twitter: http://twitter.com/kiri_feather
Tween: https://sites.google.com/site/tweentwitterclient/

Yamamoto Yusuke

unread,
Jan 17, 2013, 7:07:17 AM1/17/13
to twitter-devel...@googlegroups.com
このライブラリの事は知らないので的外れかもしれませんが、urlの最後に.jsonと付けなくても良いのでしょうか?
tmh_oauth的にはたぶんつけなくて大丈夫です。

verify_credentials を呼び出すコードは拙著Twitter APIポケットリファレンスに掲載されております。ご参考にしていただければ。
githubにもコードが上がっています。
https://github.com/yusuke/twtr-api-pocket-reference/blob/master/php/manage_friends.php
-- 
山本 裕介
@yusuke

Azusa Tokkyu

unread,
Jan 17, 2013, 7:12:18 AM1/17/13
to twitter-devel...@googlegroups.com
みなさん、ありがとうございます。

ちなみに本体となる
ユーザーが直接Twitterで認証してログインし、自分のタイムラインの人気ワードを表示させる部分は

//screen_nameを取得
$twitter->request("GET", $twitter->url("1.1/account/verify_credentials"));
$s_name = json_decode($twitter->response["response"])->{"screen_name"};

でスクリーンネームを取得することができています。
なので、認証の部分が上手くいってないのかなと思っています。

Yamamoto Yusuke

unread,
Jan 17, 2013, 7:12:46 AM1/17/13
to twitter-devel...@googlegroups.com
切り分けが難しい場合は現象が発生する最小限のコードにしましょう。

DB接続なしに、コンシューマキー・シークレット、アクセストークン・シークレットをベタ書きした状態で呼び出せるか確認してみてはいかがでしょう。
それでもうまく行かない場合はそのコード(からコンシューマシークレットは潰して)を貼り付けてください。

-- 
山本 裕介
@yusuke

On 2013/01/17, at 21:04, Azusa Tokkyu <azu...@gmail.com> wrote:

>山本さん

エラーログですが、さくらインターネットのサーバーコントロールパネルから確認できるものを見てみましたが
特にエラーは出ていません。

Yamamoto Yusuke

unread,
Jan 17, 2013, 7:16:46 AM1/17/13
to twitter-devel...@googlegroups.com
「直接Twitterで認証」した場合はDBにアクセストークン・シークレットを格納していないということでしょうか?
同じコードで呼び出しができたりできなかったりということであればパラメータが違うことになります。

「user_token,user_secretを取り出す部分はできてます」とのことでしたが、正常に取り出せていることはどのように確認していますか?
--
山本 裕介
@yusuke
http://samuraism.jp/

Azusa Tokkyu

unread,
Jan 17, 2013, 7:32:35 AM1/17/13
to twitter-devel...@googlegroups.com
>山本さん
最小限のコードで試してみました。
そのところ、DBに保存された私の本アカウントのアクセストークン・シークレットをコピペでは駄目でしたが
DBに保存された複アカのアクセストークン・シークレットをコピペではできました。
規制されてしまっていたのでしょうか?



2013年1月17日木曜日 21時12分46秒 UTC+9 山本 裕介:

Yamamoto Yusuke

unread,
Jan 17, 2013, 7:35:28 AM1/17/13
to twitter-devel...@googlegroups.com
規制、とはレートリミットのことでしょうか?
verify_credentials.jsonは Twitter API 1.1では15回/15分なのでそれ以上の呼び出しはできません。

同じコード、別のアカウントで動くということはレートリミットに達している可能性がありますね。

Rate Limited?Yes
Requests per rate limit window15

-- 
山本 裕介
@yusuke

Reply all
Reply to author
Forward
0 new messages