2013-12-18 2 views
1

Я здесь:Google плюс OAuth войти в PHP не достаточно информации

https://developers.google.com/+/web/signin/server-side-flow

На шагах 7 и 8 есть ссылка на $ запроса переменной пока эта переменная не инициализирована, поэтому копирование и склеивание из их предоставленного примера не работает, я получаю 500 ошибок сервера только с первой строкой с шага 7 или только на шаге 8, строка 8-го шага с использованием $ request, никогда не инициализированная из их примера.

$code = $request->getContent(); 

ответ

2

Пример кода вы смотрите использует Twig, который содержит $request и $response значения для упрощения RESTful конечных точек.

Следующий код делает эквивалентный код без зависимостей Twig:

<?php 
require_once 'google-api-php-client/src/Google_Client.php'; 
require_once 'google-api-php-client/src/contrib/Google_PlusService.php'; 

    $client = new Google_Client(); 

    // CLIENT ID/Secret from https://code.google.com/apis/console 
    $CLIENT_ID = 'YOUR_CLIENT_ID'; 
    $client->setClientId($CLIENT_ID); 
    $client->setClientSecret('YOUR_CLIENT_SECRET'); 

    // CUSTOM redirect URI assuming code from JavaScript callback 
    $client->setRedirectUri('postmessage'); 

    $plus = new Google_PlusService($client); 

    // Code from the client (returned in signinCallback, or in token on Android) 
    $code = file_get_contents('php://input'); 

    // Exchange the OAuth 2.0 authorization code for user credentials. 
    $client->authenticate($code); 
    $token = json_decode($client->getAccessToken()); 

    // Verify the token 
    $reqUrl = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=' . 
      $token->access_token; 

    $req = new Google_HttpRequest($reqUrl); 

    $tokenInfo = json_decode(
     $client::getIo()->authenticatedRequest($req)->getResponseBody()); 

    // If there was an error in the token info, abort. 
    if ($tokenInfo->error) { 
    print $tokenInfo->error; 
    } 
    // Make sure the token we got is for our app. 
    if ($tokenInfo->audience != CLIENT_ID) { 
    print "Token's client ID does not match app's."; 
    } 

    print 'Token from result: ' . print_r($token, true); 
+0

Спасибо за answer.It работает, но я получаю эту ошибку в консоли: 'Примечание: Не определено свойство: StdClass :: $ ошибок в C: \ WAMP \ WWW \ тест \ зарегистрировались \ plus.php на линии 35' с 'лексемы идентификатор клиента не совпадает с app's.Token из результата: StdClass Object ( [access_token] => ya29.1.AADtN_UxepFP258zs1lCee2cUa35vH6eXnf8pt251LzqtmNuO1ZtdAiLY9ewaEo [token_type] = > Носитель [expires_in] => 3594 [id_token] => длинный идентификатор здесь [created] => 1396165875 ) 'как я могу справиться с ошибкой? как «создать токен состояния подделки анти-запроса»? doc: https://developers.google.com/+/web/signin/server-side-flow – user2511140

+0

Возьмите маркер доступа из отказавшего ответа, запустите его с конечной точкой TokenInfo: https://developers.google.com. /apis-explorer/#p/oauth2/v2/oauth2.tokeninfo и убедитесь, что идентификатор клиента , связанный с вашим проектом. Если это не так, у вас есть ошибка конфигурации где-то, найдите свои источники кода для бродячего ID. – class

+0

Большое спасибо @Class. Как я могу «Создать токен состояния подделки анти-запроса» для php? (В этом примере) – user2511140

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