一旦我拥有access_token,如何获得关联的USER_ID服务器端?
-
23-10-2019 - |
题
我知道我可以要求:
https://graph.facebook.com/me?access_token=ACCESS_TOKEN
但是“ me”是指“主动用户”,大概是该机器上登录到Facebook的用户,我需要在客户端END user_id上使用Facebook用户,以便我的服务器可以向Graplapi提出请求。使用该格式的用户:
https://graph.facebook.com/USER_ID?access_token=ACCESS_TOKEN
解决方案 2
查看SDK的源代码,我发现他们从访问令牌中解析了user_id:
/*
* access_token:
* 1249203702|2.h1MTNeLqcLqw__.86400.129394400-605430316|-WE1iH_CV-afTgyhDPc
* |_______|
* |
* user id
*/
但 一个人不必这样做,因为而不是要求您的应用程序将其重定向到登录页面,然后Facebook将使用access_token和user_id将签名_request重新发布。 Facebook关于授权的文档(此后似乎已更新)错误地告诉某人应用程序请求令牌,但这仅适用于网站而不是应用程序。我发现Facebook Docs如何不断地告诉其中一个很简单,但他们却没有简单地解释它并犯错...
其他提示
我想您缺少用户身份验证概念的基础知识,这不仅与Facebook有关。
让我们假设两个用户 一个 & b 参观 domain.com/fb_profile.php
, ,其中包含( 例子 来自PHP-SDK的文件):
<?php
require '../src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'APPLICATION_ID',
'secret' => 'APPLICATION_SECRET',
'cookie' => true,
));
$session = $facebook->getSession();
$me = null;
// Session based API call.
if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
// rest of code
他们俩都成功地登录了,并且页面重新加载。现在发生的事情是我们有一个有效的会话 两个都 用户!
当 fb_profile.php
是从用户请求的 一个 (客户) 这 $facebook->api('/me');
将持有“活跃用户”的详细信息 从该特定请求(客户端)呢和您的机器(服务器)将举行会议 全部 登录的用户!
所以每次 fb_profile.php
从一个 客户 在有效的会话中,执行的结果 $facebook->api('/me');
将与 具体的 会话 具体的 客户!
那你在这里说了什么(在 大胆的) 是错的:
但是“我”是指“主动用户”,大概是该机器上登录到Facebook的用户 这将是服务器
顺便说一句,当您同时拥有有效的会话时:
$facebook->api('/me');
和:
$facebook->api('/USER_ID');
将返回相同的信息(当然是 USER_ID
是在客户端登录的用户的ID).