【发布时间】:2011-08-25 04:38:39
【问题描述】:
我想在网站中加入 FB 页面墙。为此,我需要访问令牌,但在 FB 上,我是管理员之一,而不是所有者。
当我请求访问令牌时,我得到的是我的个人资料之一,而不是我正在管理的个人资料。我可以作为管理员而不是所有者获得该墙的令牌吗?
【问题讨论】:
标签: facebook access-token
我想在网站中加入 FB 页面墙。为此,我需要访问令牌,但在 FB 上,我是管理员之一,而不是所有者。
当我请求访问令牌时,我得到的是我的个人资料之一,而不是我正在管理的个人资料。我可以作为管理员而不是所有者获得该墙的令牌吗?
【问题讨论】:
标签: facebook access-token
如果您查看http://developers.facebook.com/docs/authentication/,您会看到有以应用程序或主页身份登录的选项:它们应该会为您提供一个访问令牌,可以满足您的需求。
【讨论】:
发件人:http://developers.facebook.com/docs/reference/api/permissions/
"页面访问令牌
用于管理页面的 access_token。当您要执行作为 Page 的操作时使用此选项。通过向 /USER_ID/accounts 或具有 manage_pages 权限的 /PAGE_ID?fields=access_token 发出 HTTP GET 来检索此访问令牌。获取 /USER_ID/accounts 将返回用户拥有管理权限的页面列表(包括应用配置文件页面)以及每个页面的 access_token。注意:2011 年 9 月 22 日之后,通过此连接对用户页面的所有访问都需要 manage_pages 权限,即读取用户页面和检索这些页面的 access_tokens。有关详细信息,请参阅 User 对象的文档。”
【讨论】:
Facebook 有extended 他们的page 对象,以便更轻松地检索“页面”`access_token",您需要的是:
P.S:我正在使用 PHP-SDK
<?php
// This code is just a snippet of the example.php script
// from the PHP-SDK <http://github.com/facebook/php-sdk/blob/master/examples/example.php>
require '../src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'app_id',
'secret' => 'app_secret',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
$page_id = 'page_id';
$page_info = $facebook->api("/$page_id?fields=access_token");
if( !empty($page_info['access_token']) ) {
$args = array(
'access_token' => $page_info['access_token']
);
$page_posts = $facebook->api("/$page_id/posts","get",$args);
}
} 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();
} else {
$loginUrl = $facebook->getLoginUrl(array('scope'=>'manage_pages,read_stream'));
}
?>
【讨论】: