2016-06-01 17 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.