所以我试图用与Facebook的JS SDK中的图形API和我得到的Safari以下错误:使用Facebook图形API被打破
“OAuthException:必须使用活动的访问令牌来查询有关当前用户的信息。”
我怀疑它与Safari对x域cookie设置非常严格的事实有关,所以我在Firefox中试过它,cookie
选项在FB.init()
中设置为false。我的确发现我的FB.api()
请求中出现同样的错误。
FB.init({
appId: "<%= app_id %>",
status: true, // check login status
// We cannot rely on this cookie being set in an iframe. I found this
// out because the Graph API was not working in Safari.
// cookie: true, // enable cookies to allow the server to access the session
xfbml: true, // parse XFBML
channelUrl: window.location.protocol + '//' + window.location.host + '/fb/canvas/channel.html'
});
所以我不知道...有手动设置在FB.api()
请求access_token
查询参数的好办法?
如果FB.init()
Cookie会设置正确,这个是什么FB.api()
请求参数如下所示:
access_token xxxxxxxxxxxx|1.xxxxxxxxxxxxxxxxxxxxxx__.3600.xxxxxxxxxx-xxx|xxxxxxxxxxxxxxxxxxxxxxxxxxx
callback FB.ApiServer._callbacks.xxxxxxxxxxxxxxx
pretty 0
sdk joey
在Safari浏览器(或当cookie
FB.init()
选项未设置)的FB.api()
请求参数如下所示:
callback FB.ApiServer._callbacks.xxxxxxxxxxxxxxx
pretty 0
sdk joey
现在...显然我的应用程序有能力在服务器端生成access_token
...我想知道是否有任何方法我可以手动设置FB.api()
使用我的服务器端生成的access_token
。
我想有另一种方法来做到这一点。基本上,由于我们有一次机会在填充iFrame的初始post请求中设置cookie,所以我们可以使用这个机会来模拟FB JS中在FB.init()期间尝试设置的`fbs_xxxxxxxxx` cookie。现在... SDK设置的cookie值如下所示:`fbs_xxxxxxxxx =“access_token = xxx&expires = xxx&secret = xxx&session_key = xxx&sig = xxx&uid = xxx”`。 `access_token`和`expires`部分很容易。但我在计算其他部分时遇到了一些麻烦。 – 2011-02-01 17:01:19