Facebook Ads API无效的OAuth访问令牌 [英] Facebook Ads API Invalid OAuth access token

查看:121
本文介绍了Facebook Ads API无效的OAuth访问令牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们当前正在尝试在Laravel中设置Ads API.已经过去了几天,但是getAdAccounts()调用始终会导致无效的OAuth访问令牌".例外. 但是,在Graph Explorer API中使用相同的访问令牌对adaccounts终结点同样适用

We are currently trying to setup an Ads API in Laravel. It has been days but the getAdAccounts() call always results in 'Invalid OAuth access token.' exception. However same access token when used in the Graph Explorer API works just as well for the adaccounts endpoint

这是代码-

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 :: init(APP_ID,APP_SECRET,ACCESS_TOKEN); ACCESS_TOKEN不引用$ _SESSION ['facebooke_access_token'],而是您的Marketing API令牌. 转到 https://developers.facebook.com/apps//marketing-api/tools/ 获取Marketing API令牌.

Api::init(APP_ID,APP_SECRET, ACCESS_TOKEN); ACCESS_TOKEN Not refer to $_SESSION['facebooke_access_token'] but your Marketing API token. Go to https://developers.facebook.com/apps//marketing-api/tools/ to get Marketing API token.

这篇关于Facebook Ads API无效的OAuth访问令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆