domain.com --> AJAX --> api.domain.com with Facebook A


domain.com --> AJAX --> api.domain.com with Facebook API

我在网站上设置了一个API:API.domain.com

在API中有操作用户、评论、帖子等的对象。我还有一个Facebook对象,该对象当前被设置为吐出

$facebook->getUser()

当我在浏览器中访问我的api时,会返回我的facebook个人资料的正确ID。当我从子域-x.domain.com执行ajax调用时,会返回0。

有没有什么方法可以做到这一点,而不是在主域上运行Facebook PHP SDK,而不是与我的API集成?

我不会说这是可能的。

  • 当您在api.domain.com上创建Facebook会话时,Facebook api本身会设置Cookie
  • 当您向另一个域发送ajax请求时,必须考虑到同源策略会生效
  • 当您向另一个域发送ajax请求时,将发送属于指定域的所有cookie

facebookSDK默认使用PHP会话来存储用户信息,会话cookie不是在整个域中设置的。

您可能需要使用session_set_cookie_params来更改这一点,但是,如果您编写API,那么用户无论如何都不会通过Facebook获得授权,因此您将无法访问Cookie。