all.js - FB.getSession与OAuth2不兼容

时间:2011-12-14 17:01:24

标签: javascript facebook sdk

我包括这样的FaceBook JS SDK:

<script src="http://connect.facebook.net/en_US/all.js">

但最终我在FireBug中遇到了这个错误:

FB.getSession incompatible with OAuth2. http://connect.facebook.net/en_US/all.js

我完全迷失了。我一直试图弄清楚自昨天以来发生了什么,但没有运气。我做错了吗?

3 个答案:

答案 0 :(得分:3)

不再使用Get Session功能。 FB.getAuthResponse方法是FB.getSession方法的替代方法,该方法在迁移到OAuth 2.0后已弃用。

https://developers.facebook.com/docs/reference/javascript/FB.getAuthResponse/

答案 1 :(得分:1)

请参阅https://developers.facebook.com/docs/oauth2-https-migration/ - 您可能需要重新访问Javascript和身份验证文档 - 10月1日强制执行的oauth迁移已打开,这将破坏不合规的应用

答案 2 :(得分:0)

尝试以下修改:

1) Upgrade to Facebook PHP SDK 3.1.1 (if you are using that)
2) Modify <fb:login-button> "perms" attribute to "data-scope"
Before:
<fb:login-button perms="email" on-login="my_function_login_complete(arguments)">
Facebook Logon
</fb:login-button>
After fix:
<fb:login-button data-scope="email" on-login="my_function_login_complete(arguments)">
Facebook Logon
</fb:login-button>
3) Replace JavaScript function call "FB.getSession" for "FB.getAuthResponse"
4) Alter JavaScript function parameter "response" in "FB.login()"
a) response.session => response.authResponse
b) response.session.access_token => response.authResponse.accessToken
Before:
FB.login(function(response) {
  if (response.session) {
    console.log("User is connected to the application.”);
    var accessToken = response.session.access_token;
  }
});
After fix:
FB.login(function(response) {
  if (response.authResponse) {
    console.log("User is connected to the application.”);
    var accessToken = response.authResponse.accessToken;
  }
});
5) Alter JavaScript function parameter "response" in "FB.getLoginStatus()"
a) response.session.user_id => response.authResponse.userID
b) response.session.access_token => response.authResponse.accessToken
Before:
FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var uid = response.session.user_id;
    var accessToken = response.session.access_token;
...
After fix:
FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var uid = response.authResponse.userID;
    var accessToken = response.authResponse.accessToken;
...

此处有更多详情: https://developers.facebook.com/blog/post/503 https://developers.facebook.com/blog/post/525

祝你好运! :)