【问题标题】:Facebook Ads API Invalid OAuth access tokenFacebook Ads API 无效的 OAuth 访问令牌
【发布时间】:2016-03-14 06:08:46
【问题描述】:

我们目前正在尝试在 Laravel 中设置广告 API。已经好几天了,但 getAdAccounts() 调用总是导致“无效的 OAuth 访问令牌”。例外。 然而,在 Graph Explorer API 中使用的相同访问令牌同样适用于 adaccounts 端点

这里是代码 -

try {
        $fb = new Facebook([
                env('FACEBOOK_APP_ID'), // App ID
                env('FACEBOOK_APP_SECRET'),
                env('FACEBOOK_GRAPH_VERSION')
                ]);

        $helper = $fb->getRedirectLoginHelper();
        $accessToken = $helper->getAccessToken();

        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!";

            Api::init(
            env('FACEBOOK_APP_ID'), // App ID
            env('FACEBOOK_APP_SECRET'),
            $_SESSION['facebook_access_token']
            );
            echo $_SESSION['facebook_access_token'];
            $me = new AdUser('me');
            //dd($me);
            $my_adaccount = $me->getAdAccounts();
            dd($my_adaccount);

        } else {
            $permissions = ['ads_management', 'user_friends'];
            $loginUrl = $helper->getLoginUrl('http://localhost:8000/facebookads', $permissions);
            echo '<a href="' . $loginUrl . '">Log in with Facebook</a>';
        }
    }
    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;
    }
    catch(\Exception $e){

        dd($e);
    }

【问题讨论】:

  • 您确定您尝试发送到 API 的访问令牌 a) 有效,b) 具有正确的权限,并且 c) 可以访问您尝试访问的帐户吗?

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


【解决方案1】:

Api::init(APP_ID,APP_SECRET, ACCESS_TOKEN); ACCESS_TOKEN 不是指 $_SESSION['facebooke_access_token'] 而是指您的营销 API 令牌。 转到https://developers.facebook.com/apps//marketing-api/tools/ 获取营销 API 令牌。

【讨论】:

    猜你喜欢
    • 2019-04-28
    • 2018-09-24
    • 2021-01-13
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    相关资源
    最近更新 更多