cod*_*iot 7 facebook login facebook-graph-api facebook-javascript-sdk
我已经解决了这个问题,但我的问题不同了.我不确定javascript登录如何确定,以及其他人如何不登录其他帐户.
根据入门 FB.authResponse是在登录成功时调用,但当然在客户端.
然后我们可以得到userId和accessToken退出响应,我们也可以打电话/me获取更多信息.为了将该用户置于会话中,所有关于成功javascript登录的信息必须被发送到服务器,这是我感到困惑的地方.毕竟它是HTTP,每个其他请求都是不同的,可以复制.
可能只是因为我很困惑,关于某人如何不能破解并模仿任何其他用户的脸书ID来登录他的帐户.
例如,在身份验证成功之后,我对我的服务器进行ajax调用,提供fb-user-id然后我将其与数据库匹配并将相应的用户放入会话中,但不是因为这是fb-user-id在后端没有再次验证(或者它是否经过验证?,我没有找到任何关于它的信息)这个特定用户是实际注册我的应用程序的用户,然后是与其他人的fb相同的登录请求-user-id可以登录到他的帐户.
我敢肯定,我不是第一个有这种困惑的人.请帮助清除这种混乱,因为我现在已多次阅读文档,但仍无法弄清楚为什么其他人无法登录其他人的帐户.
编辑
我发现了这个,similar question但这里的人没有回答他如何验证后端登录或可能是我无法理解.
根据 :
如何通过Facebook的Javascript SDK安全地授权用户
将signed_request字段发送到您的服务器,该服务器正在authResponse使用javascript sdk 接收
然后在服务器端,必须遵循文档中所述的以下过程进行验证:
捕获已签名的请求后,您需要执行三个步骤:
这是PHP中的一个例子:
function parse_signed_request($signed_request) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$secret = "appsecret"; // Use your app secret here
// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
// confirm the signature
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
Run Code Online (Sandbox Code Playgroud)
这将生成一个类似于下面的JSON对象:
{
"oauth_token": "{user-access-token}",
"algorithm": "HMAC-SHA256",
"expires": 1291840400,
"issued_at": 1291836800,
"user_id": "218471"
}
Run Code Online (Sandbox Code Playgroud)
获取user_id后,该特定用户可以进入会话,但需要进行其他检查以获得适当的授权.
作为第二次检查,issued_at可以检查它是否不超过10分钟.
取自这里.
但是,可能存在app_secret可能遭到入侵的情况.为了处理这种情况,您应该遵循步骤#3,因为access_token的代码交换只能发生一次,并且在10分钟内发生.如果用户没有您网站的帐户,那么您无论如何都需要步骤#3使用access_token从FB中检索其他必要的用户数据,如姓名,电子邮件等.
为了刷新令牌,可以从您的服务器进行以下调用
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3165 次 |
| 最近记录: |