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关联.
你应该在服务器上处理它.取消授权回调作为表单POST发送到您的URL,其表单参数为signed_request,其中包含已签名的请求值.您需要使用应用程序密钥解析已签名的请求值,以获取删除应用程序的用户的用户ID.然后,您可以更新应用程序的数据库,或在用户删除您的应用程序时执行任何适当的操作.
您不希望在javascript中执行此客户端,因为需要使用您的app secret来解析/解密signed_request值.
您必须在应用程序的设置中添加一个特定的 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)
| 归档时间: |
|
| 查看次数: |
10910 次 |
| 最近记录: |