2016-01-08 2 views
0

У меня есть небольшая проблема с получением доступа к некоторым данным объявлений через приложениеДоступ к facebook приложение с приложением маркера

У меня есть эти два сценария:

Вход

<?php 


    include_once __DIR__ . '/includes/connect.php'; 
    require_once __DIR__ . '/vendor/autoload.php'; 

    use Facebook\Facebook; 

    session_start(); 

    $facebook = new Facebook([ 
     'app_id' => 'XXX', 
     'app_secret' => 'XXX', 
     'default_graph_version' => 'v2.5', 
     ]); 

    $helper = $facebook->getRedirectLoginHelper(); 

    $permissions = ['ads_read']; 
    $loginUrl = $helper->getLoginUrl('http://sparnorddashboard.local:8080/fb_callback.php', $permissions); 

    echo '<a href="'. $loginUrl .'">Log ind</a>'; 

?> 

Ответный

<?php 
include_once __DIR__ . '/includes/connect.php'; 
require_once __DIR__ . '/vendor/autoload.php'; 

use Facebook\Facebook; 

session_start(); 

$facebook = new Facebook([ 
    'app_id' => 'XXX', 
    'app_secret' => 'XXX', 
    'default_graph_version' => 'v2.5', 
    ]); 

$helper = $facebook->getRedirectLoginHelper(); 

try { 

    $access_token = $helper->getAccessToken(); 


} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    echo $e->getMessage(); 
    exit; 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
    echo $e->getMessage(); 
    exit; 
} 

if(!isset($access_token)) { 

    if($helper->getError()) { 

     header("HTTP/1.0 401 Unauthorized"); 

     echo "Error: " . $helper->getError() . "\n"; 
     echo "Error Code: " . $helper->getErrorCode() . "\n"; 
     echo "Error Reason: " . $helper->getErrorReason() . "\n"; 
     echo "Error Description: " . $helper->getErrorDescription() . "\n"; 

    } else { 

     header('HTTP/1.0 400 Bad Request'); 
     echo 'Bad request'; 

    } 

    exit; 

} 

$oAuth2Client = $facebook->getOAuth2Client(); 
$tokenMetaData = $oAuth2Client->debugToken($access_token); 

$tokenMetaData->validateAppId("1694068770828491"); 
$tokenMetaData->validateExpiration(); 


if(!$access_token->isLongLived()) { 

    try { 

     $access_token = $oAuth2Client->getLongLivedAccessToken($access_token); 

    } catch(Facebook\Exceptions\FacebookSDKException $e) { 

     $e->getMessage(); 
     exit; 

    } 

} 

$_SESSION['fb_access_token'] = (string) $access_token; 

header('Location: http://sparnorddashboard.local:8080/fetchads.php?callback=callback'); 

?> 

Но это будет использовать токен клиента пользователя - как я могу настроить его, чтобы я мог получить доступ к окну appke п? Я не хочу, чтобы пользователь входил в систему и принимал разрешения, поскольку это для внутренней панели мониторинга, которая работает на телевизионном мониторе, который будет читать данные объявлений - ничего другого.

+0

AFAIK вы можете не используйте токен вашего приложения для этого. – CBroe

ответ

1

Вы не можете использовать токен доступа APP для ads_read. Если вы не хотите получать его через логин пользователя, то другой путь - получить через Graph Api Explorer.

Предполагая, что вы уже создали Ad Account:

  1. Войти в Graph Api Explorer.
  2. Изменить на свое приложение.
    enter image description here

  3. Нажмите кнопку 'Получить токен', а затем 'Get User Access Токен'
    enter image description here

  4. Щелкните вкладку 'Расширенные права доступа' и проверьте ads_read и нажмите кнопку Получить маркер доступа.
    enter image description here

  5. Предоставьте себе необходимые разрешения.
    enter image description here

  6. Используйте маркер доступа пользователя, который будет представлен вам в маркере формы ввода поля доступа:
    enter image description here


Используйте сгенерированный маркер доступа для внутреннего приложения приборной панели/script, например:

// Add to header of your file 
use FacebookAds\Api; 

// Initialize a new Session and instantiate an Api object 
Api::init(
    '{your-app-id}', 
    '{your-app-secret}', 
    $_SESSION['facebook_access_token'] // The generated access token 
); 
+0

Я получаю «Invalid appsecret_proof, предоставленный в аргументе API» –

+0

@MortenHagh Я отредактировал ответ. В Graph Api Explorer вы должны перейти на APP (добавленный шаг), а не в Graph Api Explorer. – cwps

+0

Да! Похоже, он работает сейчас! Благодаря! –

Смежные вопросы