facebookアプリを作っているのですが、またつまずいて、やっと解決したので、
それをご報告したいと思います。
今作ってるアプリは、
ログイン⇒ユーザーへの認証⇒自動投稿
という感じの流れなのですが、
自動投稿をすると、うまくいくときもあれば、
エラーで「An active access token must be used to query information about the current user.」と
返ってきてしまうことがありました。
最初は、アクセストークンの認証が切れているのではと思い、
検索してみました。
アクセストークンは、2時間程度で認証が切れてしまうということで、
「offline_access」というものを使えば、
認証の時間を長くすることが出来るようです。
(以前は無期限だったのが、2012年5月2日以降は60日間の期間になってしまったみたいです。)
ただ、「offline_access」を指定しても、
エラーが解消されません。
次に調べてみたのは、「/me/feed」を使っていると、
エラーが起こる可能性があるということです。
▼ここの記事について詳細が書かれていました。
http://fb.dev-plus.jp/forum/topic.php?id=67
ただ、英語すぎて私にはちょっと難しすぎました><
それでやっとたどり着いたのが、
FB.apiを使用しているときに、一緒に投稿する画像を指定しているのですが、
その画像を相対パスで書いていたことが問題でした。。
以下のコードを、次のように書き換えたら、
あっさりエラーが解消されたのです。
【誤】-------------
function publishStream1()
{
FB.api('/me/feed', 'post',
{
picture : "images/kekka.gif?type=large",
message : "メッセージを入れる",
link : "http://XXXXXX/",
name : "リンク先の名前",
caption : "キャプションを指定",
description : "ディスクリプションを指定"
},
function (response)
{
if (!response || response.error) {
alert(response.error);
}
else {
alert('投稿が完了しました!');
}
});
}
-------------
【正】-------------
function publishStream1()
{
FB.api('/me/feed', 'post',
{
picture : "http://XXX/images/kekka.gif?type=large",
message : "メッセージを入れる",
link : "http://XXXXXX/",
name : "リンク先の名前",
caption : "キャプションを指定",
description : "ディスクリプションを指定"
},
function (response)
{
if (!response || response.error) {
alert(response.error);
}
else {
alert('投稿が完了しました!');
}
});
}
-------------
てっきり、同じサーバーに画像をアップしているので、
スクリプト内も相対パスでいいんだと思っていました。
でも違ったんですね、
絶対パスで指定したらエラーが解消しました。
facebookhは、ほんとにいろんなところでつまづきます、、><
0 件のコメント:
コメントを投稿