Facebook登录-我到底做错了什么



我都快抓狂了。

我们有一个web应用程序是托管在一堆不同的域,我们有一个facebook登录页面。这工作得很好。他们中的大多数运行我们的根域名,例如newsite.ourplatform.com,我们重复使用相同的facebook应用程序,并添加一个新域名。

我们有一个请求在不同的url上建立一个新网站。在过去,这并不是一个问题。我们设置了一个新的facebook应用程序,将应用程序添加到我们的配置中,瞧,facebook登录工作。(我们不经常这样做,所以我可能已经破坏了它)

这一次。我设置了一个新的应用程序id并将其插入,但每当我调用facebook登录时,它都会对我进行身份验证,但我得到的是facebook的无用响应。

。在工作站点,我调用

FB.api("/me/", function(response){console.log(JSON.stringify(response));});
并得到响应
   "{id":"12345678910","email":"my@email.com","first_name":"My Name","gender":"male","last_name":"Myname","link":"https://www.facebook.com/app_scoped_user_id/12345678910/","locale":"en_GB","name":"My Name","timezone":10,"updated_time":"2014-01-19T10:44:20+0000","verified":true}

但在破碎的网站上,我做同样的调用并得到响应

{"name":"MyName","id":"12345678910"}

这很好,但我需要他们的电子邮件。据我所知,除了email,public_profile和user_friends之外,我没有要求任何权限由于应用程序设置的方式,我们有不同的应用程序运行2.1,2.2和2.4,这个新的2.4不工作。我不确定这是在转移注意力,还是我有一个配置错误的facebook应用。

(编辑-删除受影响的网站,以保护无辜)

正如@CBroe所说,您确实需要检出API的v2.4更改日志。在2.4版的API中,Facebook引入了"声明式字段"。这意味着当你发出一个基本请求时,比如/me,你只会得到少量的信息。'name'和'id'。

你有两个选项来获得更多的字段:

选项一个

FB.api('/me?fields=first_name,last_name,gender', function(response) {
  console.log(response)
});

选择两个

FB.api('/me', function(response) {
  console.log(response)
}, {'fields': 'first_name, last_name, gender'})

这将返回如下所示的响应:

{"first_name":"First", "last_name":"Last", "gender":"gender", "id":"ID"}

上面请求中的关键字是在您的请求中指定fields URL参数,并在链接@CBroe链接中记录,我已经链接了上面。

最新更新