【问题标题】:'Invalid OAuth access token' while getting adAccount detail.获取 adAccount 详细信息时出现“无效的 OAuth 访问令牌”。
【发布时间】:2015-10-14 10:57:08
【问题描述】:

我正在使用 FB Ads API,按照文档中描述的步骤创建我的 PHP 文件,如下所示。它给了我

致命错误:未捕获的异常“FacebookAds\Http\Exception\AuthorizationException”与消息“无效的 OAuth 访问令牌”。在 /project/root/vendor/facebook/php-ads-sdk/src/FacebookAds/Http/Exception/RequestException.php 第 137 行

FacebookAds\Http\Exception\AuthorizationException:OAuth 访问令牌无效。在 /project/root/vendor/facebook/php-ads-sdk/src/FacebookAds/Http/Exception/RequestException.php 第 137 行

我的 PHP 代码 sn-p 是

<?php

require_once DIR . '/vendor/autoload.php';

use Facebook\Facebook;
use Facebook\Exceptions\FacebookResponseException;
use Facebook\Exceptions\FacebookSDKException;
use FacebookAds\Api;
use FacebookAds\Object\AdUser;

// Init PHP Sessions
session_start();

$fb = new Facebook([
    'app_id' => 'your-app-id',
    'app_secret' => 'your-app-secret',
        ]);

$helper = $fb->getRedirectLoginHelper();

if (!isset($_SESSION['facebook_access_token'])) {
    $_SESSION['facebook_access_token'] = null;
}

if (!$_SESSION['facebook_access_token']) {
    $helper = $fb->getRedirectLoginHelper();
    try {
        $_SESSION['facebook_access_token'] = (string) $helper->getAccessToken();
    } catch (FacebookResponseException $e) {
// When Graph returns an error
        echo 'Graph returned an error: ' . $e->getMessage();
        exit;
    } catch (FacebookSDKException $e) {
// When validation fails or other local issues
        echo 'Facebook SDK returned an error: ' . $e->getMessage();
        exit;
    }
}

if ($_SESSION['facebook_access_token']) {
    echo "You are logged in!";
    $app = Api::init(
                    'your-app-id', // App ID
                    'your-app-secret', $_SESSION['facebook_access_token'] // Your user access token
    );
    $me = new AdUser('me');
    $my_adaccount = $me->getAdAccounts()->current();
    print_r($my_adaccount->getData());
} else {
    $permissions = ['ads_management'];
    $loginUrl = $helper->getLoginUrl('http://localhost:8888/marketing-api/', $permissions);
    echo 'Log in with Facebook';
}

【问题讨论】:

  • 您是否在开发者设置下列出了您的广告帐户?

标签: php facebook-graph-api facebook-ads-api


【解决方案1】:

您还应该检查您的访问令牌是否未过期,因为这也会导致引发身份验证异常。此访问令牌对象具有函数isExpired,您可以使用它来测试它。

您可以通过使用Oauth2Client 和调用getLongLivedAccessToken 来扩展访问令牌。

$long_lived_token = 
  $fb->getOauth2Client()->getLongLivedAccessToken($access_token);

如果要查看令牌失效的原因,可以使用开发者调试工具: https://developers.facebook.com/tools/debug/

【讨论】:

  • 我使用了调试器,我的访问令牌有效,但仍然显示相同的错误。
猜你喜欢
  • 1970-01-01
  • 2016-05-05
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-03
相关资源
最近更新 更多