Aar*_*Lee 6 php sdk facebook version token
我正在尝试使用PHP sdk v4.0获取用于PAGE管理的长期访问令牌.
我从用户的登录中抓取访问令牌(是的,我正在抓取特定于页面的访问令牌).然后将其发送到文档中指定的端点,但我没有得到任何结果,我没有收到任何错误.
我能知道使用的代码片段是什么吗?
这是我到目前为止使用的代码
$endpoint = '/oauth/access_token?';
$endpoint .= 'grant_type=fb_exchange_token&';
$endpoint .= 'client_id='.$this->app_id.'&';
$endpoint .= 'client_secret='.$this->app_secret.'&';
$endpoint .= 'fb_exchange_token='.$access_token;
try {
$response = (new FacebookRequest(
$this->session, 'GET', $endpoint
))->execute();
// Do something with the response here but response is empty
} catch (FacebookRequestException $ex) {
echo $ex->getMessage();
} catch (\Exception $ex) {
echo $ex->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
Sam*_*myK 19
您可以使用几种类型的访问令牌来调用Graph.知道使用哪个访问令牌可能很棘手.
如果您想对页面进行更改并以admin用户身份发布在页面墙上,则需要使用该用户的访问令牌.
manage_pages如果您计划在页面上执行特定于管理员的操作,则需要让该用户使用该权限登录.
$helper = new FacebookRedirectLoginHelper($redirect_url);
echo '<a href="' . $helper->getLoginUrl(['manage_pages']) . '">Login</a>';
Run Code Online (Sandbox Code Playgroud)
默认情况下,您将从Facebook获得一个短期用户访问令牌.我假设您正在使用数据库来存储您的访问令牌.您需要将长期用户访问令牌交换为长期存在的用户访问令牌,并将新令牌保存在数据库中.
$accessToken = $session->getAccessToken();
$longLivedAccessToken = $accessToken->extend();
echo (string) $longLivedAccessToken;
Run Code Online (Sandbox Code Playgroud)
如果要将长期存在的用户访问令牌存储在数据库中,作为最佳实践,您应该使用令牌生成a code然后生成另一个长期存取的令牌.这样,您每次都不代表用户对所有请求使用相同的访问令牌.这可以最大限度地降低您的应用被标记为垃圾邮件的可能性.
use Facebook\Entities\AccessToken;
$longLivedAccessToken = new AccessToken('{long-lived-access-token}');
$code = AccessToken::getCodeFromAccessToken($longLivedAccessToken);
$newLongLivedAccessToken = AccessToken::getAccessTokenFromCode($code);
Run Code Online (Sandbox Code Playgroud)
如果您想在页面上发布状态并让帖子显示为页面已发布状态,则您需要使用页面访问令牌.
使用页面管理员的长期用户访问令牌,您可以列出该用户在/me/accounts端点上管理的页面.您需要拉出access_token作为页面访问令牌的字段.您还可以拉取该perms字段以查看管理员用户具有的权限.
$request = new FacebookRequest($session, 'GET', '/me/accounts?fields=name,access_token,perms');
$pageList = $request->execute()->getGraphObject()->asArray();
Run Code Online (Sandbox Code Playgroud)
如果使用短期用户访问令牌来获取页面访问令牌,则页面访问令牌也将是短暂的.
如果您愿意,可以直接使用长期页面访问令牌交换短期页面访问令牌.这将为您提供一个持续约2个月的页面访问令牌.
$pageAccessToken = new AccessToken('{short-lived-page-access-token}');
$longLivedPageAccessToken = $pageAccessToken->extend();
Run Code Online (Sandbox Code Playgroud)
但是,如果使用长期存在的用户访问令牌来获取页面访问令牌,则页面访问令牌将永不过期.
您可以将页面访问令牌视为页面管理员用户访问令牌的"子访问令牌".这是一个重要的概念,因为页面访问令牌与您从中获取页面访问令牌的管理员用户相关联.
由于页面管理员可以拥有不同的页面管理员角色,如果未为管理员用户分配授予他们所需特定权限的角色,则会限制页面访问令牌的范围.
| 归档时间: |
|
| 查看次数: |
9670 次 |
| 最近记录: |