2016-06-01 7 views
0

Ich versuche, die Google People API zu verwenden, die es mir ermöglicht, die Kontakte eines Benutzers abzurufen. Hier ist mein Code:Google People API wirft 403 Fehler über Umfang

$scriptUri = "http://".$_SERVER["HTTP_HOST"].$_SERVER['PHP_SELF']; 
$client = new Google_Client(); 
$client->setClientId('OMITTED'); 
$client->setClientSecret('OMITTED'); 
$client->setRedirectUri($scriptUri); 
//$client->setAccessType('offline'); 

$client->setScopes(array('https://www.googleapis.com/auth/plus.login', 'https://www.googleapis.com/auth/contacts.readonly', 'profile')); 

if (isset($_GET['oauth'])) { 
    // Start auth flow by redirecting to Google's auth server 
    $auth_url = $client->createAuthUrl(); 
    header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL)); 
} else if (isset($_GET['code'])) { 
    // Receive auth code from Google, exchange it for an access token, and 
    // redirect to your base URL 
    $client->authenticate($_GET['code']); 
    $_SESSION['access_token'] = $client->getAccessToken(); 
    $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/'; 
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); 
} else if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { 
    // You have an access token; use it to call the People API 
    $client->setAccessToken($_SESSION['access_token']); 
    $people_service = new Google_Service_People($client); 
    $connections = $people_service->people->get('people/me'); 
    // TODO: Use service object to request People data 
} else { 
    $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/?oauth'; 
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); 
} 

Wenn die $ Verbindungen Zeile aufgerufen wird, wird der folgende Fehler ausgelöst:

abgefangene Ausnahme 'Google_Service_Exception' mit der Meldung ‚Fehler https://people.googleapis.com/v1/people/me Aufruf GET: (403) Der Anrufer hat keine Erlaubnis, "Leute/mich" anzufragen. Die Anforderung erfordert einen der folgenden Bereiche: [profile, https://www.googleapis.com/auth/plus.login].

Ich kann nicht herausfinden, warum der Fehler auftritt, da der Bereich oben festgelegt ist.

Alle Hilfe ist willkommen!

Antwort

0

Ich habe gerade Ihren Code ohne Problem verwendet. Meine Vermutung ist, dass $_SESSION['access_token'] ein Zugriffstoken enthält, das nicht die richtigen Bereiche autorisiert hat. Gehen Sie den Authentifizierungsablauf erneut durch, um sicherzustellen, dass Sie ein neues Zugriffstoken mit den richtigen autorisierten Bereichen erhalten.

Verwandte Themen