首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Safari 11“防止跨网站跟踪”破坏facebook登录

Safari 11“防止跨网站跟踪”破坏facebook登录
EN

Stack Overflow用户
提问于 2019-01-30 10:06:31
回答 2查看 1.9K关注 0票数 0

当用户打开Safari的“防止跨站点跟踪”时,Facebook登录response.statusunknown,有什么方法可以获得登录信息吗?

同样的代码在Chrome中运行得很好

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-13 13:11:08

问题的原因

如果您使用FB.getLoginStatus获取accessToken,那么它无法在safari上工作,从而使阻止跨站点跟踪

US

代码语言:javascript
复制
FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    ...
    var uid = response.authResponse.userID;
    var accessToken = response.authResponse.accessToken;
  }
 });

溶液

通过重定向URL中的accessToken通过code获取

us

示例

step1.打开OAuth对话框

你的redirect_uri是https://www.sample.com.tw/login

代码语言:javascript
复制
 GET https://www.facebook.com/dialog/oauth?
    client_id={app-id}
    &redirect_uri=https://www.sample.com.tw/login

step2.获取代码

在Facebook重定向到您的页面后,您可以在URL中获取代码,这将类似于:

代码语言:javascript
复制
https://www.sample.com.tw/login?code=ABCDEFG

step3.通过服务器端API获取访问令牌

代码语言:javascript
复制
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)永远不应该在客户端代码中结束。

票数 1
EN

Stack Overflow用户

发布于 2019-01-30 10:16:09

尝试禁用cookie策略。我和Google也有类似的问题,这段代码解决了这个问题。希望它也适用于Facebook登录

代码语言:javascript
复制
auth2 = window.gapi.auth2.init({
    client_id: 'xxx',
    cookiepolicy: 'none',
  });

参考资料:https://github.com/google/google-api-javascript-client/issues/342

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54437936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档