首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图形返回错误需要扩展权限business_management

图形返回错误需要扩展权限business_management
EN

Stack Overflow用户
提问于 2016-11-01 10:06:36
回答 1查看 2.8K关注 0票数 0

我的应用程序具有ads_management、business_management和标准级别的权限,所以当我尝试从Facebook帐户登录时,它成功地检索了信息。但是当我的客户用fb登录时,它会显示出错误。

代码语言:javascript
复制
Graph returned an error: (#200) Requires extended permission: business_management

我正在执行以下API调用v2.8

代码语言:javascript
复制
$fb = new \Facebook\Facebook([
 'app_id'                 => $appId,
 'app_secret'         => $appSecret,
 'default_graph_version' => $graph_api_version,
]);

$response = $fb->get('/me/businesses', $accessToken); 

原因和可能的解决办法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-01 10:24:33

尝尝这个

代码语言:javascript
复制
$fb = new \Facebook\Facebook([
 'app_id'                 => $appId,
 'app_secret'         => $appSecret,
 'default_graph_version' => $graph_api_version,
]);

$helper = $fb->getRedirectLoginHelper();

$permissions = [
    'email', 
    'user_friends', 
    'manage_pages', 
    'business_management',
    'ads_management'
];


$fb_url = $helper->getLoginUrl(
    <callbackUrl>, 
    $permissions
);

将使用重定向到这个网址。Facebook将在获得用户的权限后再次将用户重定向回回调url。一旦客户通过这个url返回门户,您将获得具有扩展权限的访问令牌,并通过短寿命访问令牌交换长寿命访问令牌,并查询重新定义的图形api。

回调脚本

代码语言:javascript
复制
$fb = new \Facebook\Facebook([
    'app_id'                 => $appId,
    'app_secret'         => $appSecret,
    'default_graph_version' => $graph_api_version,
]);

$helper = $fb->getRedirectLoginHelper();

try {
    $accessToken = $helper->getAccessToken();
} catch (Facebook\Exceptions\FacebookResponseException $e) {
    // When Graph returns an error
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
} catch (Facebook\Exceptions\FacebookSDKException $e) {
    // When validation fails or other local issues
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
}

// The OAuth 2.0 client handler helps us manage access tokens
$oAuth2Client = $fb->getOAuth2Client();

// Exchange short-lived access token with long-lived access token
if (!$accessToken->isLongLived()) {
    // Exchanges a short-lived access token for a long-lived one
    try {
        $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
    } catch (Facebook\Exceptions\FacebookSDKException $e) {
        echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
        exit;
    }
}

存储访问令牌并将用户重定向到查询此标记的位置。

代码语言:javascript
复制
$response = $fb->get('/me/businesses', $accessToken); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40357860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档