如果我有他/她的 oauth_token,如何获取用户 access_token?

Posted

技术标签:

【中文标题】如果我有他/她的 oauth_token,如何获取用户 access_token?【英文标题】:How to get user access_token if I have his/her oauth_token? 【发布时间】:2011-12-16 18:31:39 【问题描述】:

当用户打开我的画布应用程序时,我会从 Facebook 获得一个 signed_request,我从中派生出 user_idoauth_token。那么如何获取access_token 并检查/获取用户权限和其他数据?

【问题讨论】:

【参考方案1】:

你说的oauth_token也是用户access_token,应该完全一样。

要检查用户权限,您可以对 /me/permissions 进行 GET 调用,这应返回类似于以下的数据数组


  "data": [
    
      "installed": 1, 
      "read_stream": 1, 
      "manage_notifications": 1, 
      "manage_pages": 1, 
      "user_likes": 1, 
      "user_activities": 1, 
      "user_interests": 1, 
      "user_photos": 1, 
      "user_about_me": 1, 
      "type": "permissions"
    
  ]

根据您希望访问的其他数据,您需要请求更多权限,然后调用适当的 API 端点。例如获取用户基本信息拨打/me或获取他们的朋友列表/me/friends

您可以在https://developers.facebook.com/docs/reference/api/permissions/找到您可以申请的所有权限

以及有关在 API 中调用何处以检索您需要的不同数据位的所有信息https://developers.facebook.com/docs/reference/api/

【讨论】:

【参考方案2】:

当您说您拥有他们的“oauth 令牌”时,您确定这不是访问令牌吗?您可以尝试使用该令牌对/me/permissions 进行 API 调用,看看它是否正常工作?它应该返回用户授予您的应用程序的权限列表(可通过该令牌使用)

【讨论】:

【参考方案3】:
    <?php
include '../../src/config.php';
// Get User ID
$user = $facebook->getUser();

// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) 
  try 
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
   catch (FacebookApiException $e) 
    error_log($e);
    $user = null;
  


// Login or logout url will be needed depending on current user state.
if ($user) 
  $logoutUrl = $facebook->getLogoutUrl();
  $access_token = $facebook->getAccessToken();
$user_xml = "<?xml version=\"1.0\"?>\n"; 
$user_xml .= "<roots>\n";
$user_xml .= "<access>\n";
$user_xml .= "<token>" . $access_token . "</token>\n"; 
$user_xml .= "</access>\n";
$user_xml .= "</roots>\n";
echo $user_xml; 



 else 
  $loginUrl = $facebook->getLoginUrl();





?>

【讨论】:

以上是关于如果我有他/她的 oauth_token,如何获取用户 access_token?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用他/她的号码获取联系人姓名

laravel 的passport Oauth 认证登录请求 的 oauth_token 重置

使用getJSON时,如何获取响应数据?

如何让机器人发送直接消息给该机器人在互服务器中没有它并且有他的 ID 的人

oauth_token 和 oauth_verifier 参数是不是足以用于持久 isLoggedIn?

Tumblr API 2:“OAUTH_TOKEN”和“OAUTH_TOKEN_SECRET”在哪里