Клиентская библиотека Google API

0

Недавно я загрузил клиентскую библиотеку Google API для PHP, загрузил ее на свой сайт и использовал код, предоставленный Google для подключения к моему календарю. Первая часть работает очень хорошо. Я отправляю сообщение: https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=http где я нажимаю кнопку accept. Я перенаправляюсь обратно к этому файлу с помощью authcode. Но эта строка терпит неудачу:
$ accessToken = $client-> authenticate ($ authCode);

require_once ('google-api-php-client/autoload.php'); // path to autoload.php
if ($_GET[code] == FALSE) {
$client = new Google_Client();
$client->setClientId('My client ID');
$client->setClientSecret('My secret');
$client->setRedirectUri('http://'); // path to this file.
$client->addScope('https://www.googleapis.com/auth/calendar');
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
$service = new Google_Service_Calendar($client);
$authUrl = $client->createAuthUrl();
header("location: $authUrl"); // sends me to account.google.com  I accept and get send back to    this file :-)
}
Else {
//$authCode = trim(fgets(STDIN));
$authCode = $_GET[code]; // get authcode from google
//Exchange authorization code for access token
$accessToken = $client->authenticate($authCode); //Fatal error: Call to a member function on a              strong text**non-object in authenticate() on line 23
$client->setAccessToken($accessToken); 
  • 3
    Как это терпит неудачу? Выдает ли это сообщение об ошибке? Нам нужна дополнительная информация, чтобы помочь вам.
  • 0
    должно ли это быть $ _GET ['code']
Теги:
authentication

1 ответ

0

переменная $client должна находиться в области вне ветки if, как в:

require_once ('google-api-php-client/autoload.php'); // path to autoload.php

$client = new Google_Client();
$client->setClientId('My client ID');
$client->setClientSecret('My secret');
$client->setRedirectUri('http://'); // path to this file.
$client->addScope('https://www.googleapis.com/auth/calendar');
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
$service = new Google_Service_Calendar($client);

if ($_GET['code'] == FALSE) {
  $authUrl = $client->createAuthUrl();
  header("location: $authUrl"); // sends me to account.google.com  I accept and get send back to    this file :-)
} else {
  //$authCode = trim(fgets(STDIN));
  $authCode = $_GET['code']; // get authcode from google
  //Exchange authorization code for access token
  $accessToken = $client->authenticate($authCode); //Fatal error: Call to a member function on a              strong text**non-object in authenticate() on line 23
  $client->setAccessToken($accessToken);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню