如何使用Facebook JS SDK取消授权回调URL?

Bra*_*don 0 authorization facebook-javascript-sdk

我一直在研究这个主题,但找不到Javascript SDK的任何内容.我找到了PHP和C#的例子,但我仍然不确定Javascript SDK.据我所知,您设置了一个包含JS SDK的页面,将其放入deauthorize回调URL并订阅该页面上的authResponseChange事件.

这是我能说的最好的,但是我没有找到任何例子或确认这种方法是否有效.如果可以提供任何精彩的例子.

我在Javascript测试控制台上测试了这个:http://developers.facebook.com/tools/console/但该方法使用了旧的rest API的撤销授权.我们希望使用取消授权回调URL从用户帐户中删除Facebook关联.

Pat*_*mes 9

你应该在服务器上处理它.取消授权回调作为表单POST发送到您的URL,其表单参数为signed_request,其中包含已签名的请求值.您需要使用应用程序密钥解析已签名的请求值,以获取删除应用程序的用户的用户ID.然后,您可以更新应用程序的数据库,或在用户删除您的应用程序时执行任何适当的操作.

您不希望在javascript中执行此客户端,因为需要使用您的app secret来解析/解密signed_request值.


May*_*ndi 6

您必须在应用程序的设置中添加一个特定的 URL,当用户取消对您的应用程序的授权时,您将在该 URL 上收到一个 POST 请求。

在请求的正文中,您将有signed_request。为了从该已签名请求中获取有用数据,您需要执行以下操作:

你可以使用加密来帮助解决这个问题。 https://www.npmjs.com/package/crypto

  const crypto = require('crypto');

  function parseRequest(signed_request, secret){
      signed_request = signed_request.split('.');
      var encoded_sig = signed_request[0];
      var payload = signed_request[1];


      var data = JSON.parse(new Buffer(payload, 'base64').toString());

      if (data.algorithm.toUpperCase() !== 'HMAC-SHA256')
        return null;

      var hmac = crypto.createHmac('sha256', secret);
      var encoded_payload = hmac.update(payload).digest('base64')
        .replace(/\//g, '_').replace(/\+/g, '-').replace(/={1,2}$/, '');

      if (encoded_sig !== encoded_payload)
        return null;

      return data;
  }
Run Code Online (Sandbox Code Playgroud)