Facebook Graph API 扩展权限是指超出基本权限范围的额外访问权限,允许应用获取用户更多数据或执行更高级操作。这些权限需要用户明确授权才能使用。
user_likes
- 访问用户点赞的页面、帖子等user_posts
- 读取用户发布的帖子user_photos
- 访问用户的照片user_videos
- 访问用户上传的视频user_friends
- 获取用户好友列表email
- 获取用户邮箱地址pages_show_list
- 查看用户管理的页面pages_read_engagement
- 读取页面内容pages_manage_posts
- 管理页面帖子pages_manage_metadata
- 管理页面元数据publish_to_groups
- 发布内容到用户管理的群组publish_video
- 以用户名义上传视频manage_pages
- 完全管理用户拥有的页面<?php
require_once __DIR__ . '/vendor/autoload.php'; // 引入Facebook SDK
$fb = new Facebook\Facebook([
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_graph_version' => 'v12.0',
]);
$helper = $fb->getRedirectLoginHelper();
// 请求扩展权限
$permissions = ['email', 'user_likes', 'user_posts'];
$loginUrl = $helper->getLoginUrl('https://your-callback-url.com/login-callback.php', $permissions);
echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!</a>';
// 回调处理
try {
$accessToken = $helper->getAccessToken();
$response = $fb->get('/me?fields=id,name,email,likes{name}', $accessToken);
$userNode = $response->getGraphUser();
// 使用获取的数据
echo 'Logged in as: ' . $userNode->getName();
echo 'Email: ' . $userNode->getEmail();
// 获取点赞数据
$likes = $userNode->getField('likes');
foreach ($likes as $like) {
echo $like['name'] . '<br>';
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
}
?>
email
权限获取用户邮箱user_posts
分析用户发布内容user_likes
了解用户兴趣原因:用户可能不信任应用或认为权限请求过多 解决:只请求必要权限,在请求前解释为什么需要这些权限
原因:可能缺少必要权限或用户没有相应数据 解决:检查是否已获得所需权限,处理空数据情况
原因:Facebook对某些高级权限需要审核 解决:提交详细的使用说明和演示视频
原因:短期令牌通常2小时过期 解决:将短期令牌交换为长期令牌(60天)
// 交换长期令牌示例
$oAuth2Client = $fb->getOAuth2Client();
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
通过合理使用Facebook Graph API的扩展权限,可以开发出功能丰富且用户友好的社交应用。
没有搜到相关的文章