Как получить доступ к пользователю access_token, если у меня есть его / ее oauth_token?

#facebook #access-token #facebook-canvas

#Facebook #токен доступа #facebook-canvas

Вопрос:

Когда пользователь открывает мое приложение canvas, я получаю signed_request от Facebook, из которого я извлекаю user_id и oauth_token . Как я могу затем получить access_token и проверить / получить разрешения пользователя и другие данные?

Ответ №1:

oauth_token, о котором вы говорите, также является доступом пользователя access_token, они должны быть точно такими же.

Чтобы проверить разрешения пользователей, вы можете выполнить вызов GET в /me/permissions, это должно вернуть массив данных, аналогичный приведенному ниже

 {
  "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» — вы уверены, что это не токен доступа? Можете ли вы попробовать вызвать API /me/permissions с помощью этого токена и посмотреть, работает ли он? Он должен вернуть список разрешений, которые пользователь предоставил вашему приложению (которые можно использовать с помощью этого токена)

Ответ №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();
}




?>