【发布时间】: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