#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();
}
?>