当用户打开Safari的“防止跨站点跟踪”时,Facebook登录response.status是unknown,有什么方法可以获得登录信息吗?
同样的代码在Chrome中运行得很好

发布于 2019-02-13 13:11:08
问题的原因
如果您使用FB.getLoginStatus获取accessToken,那么它无法在safari上工作,从而使阻止跨站点跟踪
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
...
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
}
});溶液
通过重定向URL中的accessToken通过code获取
示例
step1.打开OAuth对话框
你的redirect_uri是https://www.sample.com.tw/login
GET https://www.facebook.com/dialog/oauth?
client_id={app-id}
&redirect_uri=https://www.sample.com.tw/loginstep2.获取代码
在Facebook重定向到您的页面后,您可以在URL中获取代码,这将类似于:
https://www.sample.com.tw/login?code=ABCDEFGstep3.通过服务器端API获取访问令牌
GET https://graph.facebook.com/oauth/access_token?
client_id={app-id}
&redirect_uri=https://www.sample.com.tw/login
&client_secret={app-secret}
&code=ABCDEFG您的应用程序机密(Client_secret)永远不应该在客户端代码中结束。
发布于 2019-01-30 10:16:09
尝试禁用cookie策略。我和Google也有类似的问题,这段代码解决了这个问题。希望它也适用于Facebook登录
auth2 = window.gapi.auth2.init({
client_id: 'xxx',
cookiepolicy: 'none',
});参考资料:https://github.com/google/google-api-javascript-client/issues/342
https://stackoverflow.com/questions/54437936
复制相似问题