【问题标题】:Is there a way to make the Facebook PHP SDK and Javascript SDK communicate有没有办法让 Facebook PHP SDK 和 Javascript SDK 通信
【发布时间】:2011-08-16 04:25:37
【问题描述】:

我将 PHP SDK 用于集成 Facebook 的多个后端功能,并使用 Javascript SDK 执行嵌入小部件(例如:按钮等)之类的操作。

有没有一种技术可以让他们相互交流?例如,如果我的用户使用我的网站社交登录(使用 PHP SDK)登录,我可以使用 JS 内容记录该信息,从而允许他们与 Graph API 交互。

也许有一种方法可以在 JS 嵌入代码中包含用户令牌以便它知道?

我似乎找不到任何讨论这个的东西。

【问题讨论】:

    标签: php javascript facebook-graph-api


    【解决方案1】:

    截至目前(2011 年 8 月),Facebook 已升级其 PHP 和 JS sdk 以完全支持 OAuth 2.0。见https://developers.facebook.com/blog/post/525/http://developers.facebook.com/blog/post/534/

    在 OAuth 2.0 迁移之前,您可以使用 session 选项到 FB.init 方法将用户会话传递给 js sdk。尽管正在逐步淘汰(2011 年 10 月 1 日是 OAuth 2.0 迁移截止日期),但从技术上讲,它仍然有效。

    如果您在FB.init js 调用中将cookieoauth 设置为true,它将查找名为fbsr_APPID 的cookie(其中APPID 是您的应用程序的应用程序ID)。该 cookie 需要包含 signed request

    我还没有找到关于如何在 PHP 中构造签名请求的示例代码,但应该可以反转 Facebook 提供的用于解码签名请求的代码示例。

    总结一下:

    1. 根据用户凭据创建签名请求。
    2. 将其设置为fbsr_APPID cookie
    3. 加载 JS SDK,将 cookieoauthFB.init 中设置为 true

    【讨论】:

      【解决方案2】:

      如果您使用 JS SDK 登录,您可以将其配置为创建 facebook cookie。然后,您可以从中提取令牌并在 PHP sdk 中使用它,如 here

      所述
      FB.init({appId: 'your app id', status: true, cookie: true,
                   xfbml: true});
      

      如果您将 cookie 设置为 true,您将在服务器端获得一个带有令牌的 cookie,您可以将令牌传递给 PHP sdk。

      【讨论】:

      • 这实际上是我更感兴趣的另一种方式。我将用户令牌存储在数据库中,所以我想知道是否有一种方法可以使用令牌初始化 JS SDK 内容,所以 JS 登录是不需要。
      • 啊:嗯,不是真的。您可以做的是将令牌传递给页面,然后在图形 API 上使用 JSONP,方法是在 jquery 中使用(例如)getJSON 并指定一个回调函数,如 stackoverflow.com/questions/4669781/… 所示。
      猜你喜欢
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 2013-12-13
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多