Facebook PHP SDK:检查用户是否已授予某组权限
Facebook PHP SDK: Check if a user has granted a certain set of permissions
我想检查用户是否已授权以下权限; 'manage_pages'、'publish_pages'、'read_insights',适用于我的应用程序。简而言之,如果他们拒绝一项或多项权限,我需要知道,因为所有这些都是必需的。
这是我获得用户访问令牌后的回调方法。我如何验证他们批准了所有权限请求?
注意:我正在使用 SammyK Laravel Facebook SDK 包。
public function handleFacebookCallback()
{
try {
$token = Facebook::getAccessTokenFromRedirect();
$user = Facebook::get('/me?fields=permissions', $token)->getGraphUser();
$permissions = $user['permissions']->asArray();
// permissions: 'manage_pages', 'publish_pages', 'read_insights'
if (array_key_exists('publish_pages', $permissions['data'][0]))
{
// permissions exist, proceed
}
else
{
// user denied permission(s), redirect
}
}
....
不确定这是否是最巧妙的答案或者其他人会如何处理这个问题,但这是我想出的...
try {
$token = Facebook::getAccessTokenFromRedirect();
$request = Facebook::get('/me?fields=permissions', $token);
$user = $request->getGraphUser();
$permissions = $user['permissions'];
// if user denied ANY of the required permissions
foreach ($permissions as $p => $permission)
{
if ($permission['status'] !== 'granted')
{
return redirect()->route('connect.index')->withErrors('Error: We require all permissions in order to connect your Facebook page.');
}
}
}
根据Facebook Graph API you can call user/permissions获取用户授予应用程序的所有权限。
$request = new FacebookRequest(
$session,
'GET',
'/me/permissions'
);
$response = $request->execute();
$graphObject = $response->getGraphObject();
/* handle the result */
foreach($graphObject as $permission) {
if($permission->permission == 'publish_pages' AND $permission->status == 'granted') {
// User has granted publish_pages permission
}
}
你可以调试这个调用 here,我没有测试过,但它应该可以工作。
我想检查用户是否已授权以下权限; 'manage_pages'、'publish_pages'、'read_insights',适用于我的应用程序。简而言之,如果他们拒绝一项或多项权限,我需要知道,因为所有这些都是必需的。
这是我获得用户访问令牌后的回调方法。我如何验证他们批准了所有权限请求?
注意:我正在使用 SammyK Laravel Facebook SDK 包。
public function handleFacebookCallback()
{
try {
$token = Facebook::getAccessTokenFromRedirect();
$user = Facebook::get('/me?fields=permissions', $token)->getGraphUser();
$permissions = $user['permissions']->asArray();
// permissions: 'manage_pages', 'publish_pages', 'read_insights'
if (array_key_exists('publish_pages', $permissions['data'][0]))
{
// permissions exist, proceed
}
else
{
// user denied permission(s), redirect
}
}
....
不确定这是否是最巧妙的答案或者其他人会如何处理这个问题,但这是我想出的...
try {
$token = Facebook::getAccessTokenFromRedirect();
$request = Facebook::get('/me?fields=permissions', $token);
$user = $request->getGraphUser();
$permissions = $user['permissions'];
// if user denied ANY of the required permissions
foreach ($permissions as $p => $permission)
{
if ($permission['status'] !== 'granted')
{
return redirect()->route('connect.index')->withErrors('Error: We require all permissions in order to connect your Facebook page.');
}
}
}
根据Facebook Graph API you can call user/permissions获取用户授予应用程序的所有权限。
$request = new FacebookRequest(
$session,
'GET',
'/me/permissions'
);
$response = $request->execute();
$graphObject = $response->getGraphObject();
/* handle the result */
foreach($graphObject as $permission) {
if($permission->permission == 'publish_pages' AND $permission->status == 'granted') {
// User has granted publish_pages permission
}
}
你可以调试这个调用 here,我没有测试过,但它应该可以工作。