2016-01-10 13 views
5

Итак, я последовал за руководством quickstart и решил разбить его на класс, называемый планировщиком. Я работаю над кодом аутентификации, но я продолжаю получать следующее: «Ошибка 400 (ошибка OAuth 2) Ошибка Недействительный запрос Отсутствует требуемый параметр: redirect_uri».API Google Client - Отсутствует требуемый параметр: redirect_uri

class scheduler{ 

//The Google Client object 
private $googleClient; 

//the Google Calendar Service ojbect 
private $calendarService; 

/* 
* Google Calendar Setup 
* 
* This creates a Google Client object so that you may create a Google Calendar object. 
* 
*/ 
function __construct(){ 
    //set the application name 
    define("APPLICATION_NAME", "Web client 1"); 
    // 
    define("CREDENTIALS_PATH", "~/scheduler/credentials.json"); 
    // 
    define("CLIENT_SECRET_PATH", __DIR__ . "/scheduler/client_secret.json"); 
    // 
    define("SCOPES", implode(" ", array(Google_Service_Calendar::CALENDAR_READONLY))); 

    /*if(php_sapi_name() != "cli"){ 
     throw new Exception("This application must be run on the command line");  
    }*/ 

    //create the google client 
    $this->googleClient = new Google_Client(); 

    //setup the client 
    $this->googleClient->setApplicationName(APPLICATION_NAME); 
    $this->googleClient->setDeveloperKey("AIzaSyBmJLvNdMYuFhVpWalkUdyStrEBoVEayYM"); 
    $this->googleClient->setScopes(SCOPES); 
    $this->googleClient->setAuthConfigFile(CLIENT_SECRET_PATH); 
    $this->googleClient->setAccessType("offline"); 

    //get the credentials file path 
    $credentialsPath = expandHomeDirectory(CREDENTIALS_PATH); 

    //if the file exists 
    if(file_exists($credentialsPath)){ 

     //get the credentials from the file 
     $accessToken = file_get_contents($credentialsPath); 

    }//if it does not 
    else{ 

     //request the authorization url 
     $authURL = $this->googleClient->createAuthUrl(); 
     //print the authorization ulr 
     echo "<a href=\"$authURL\">Press Me</a><br /><br />"; 

     //prompt the user to enter the auth code 
     print("Enter authentication code: "); 

     // 
     $authCode = trim(fgets(STDIN)); 

     //exchange authorization for an access token 
     $accessToken = $this->googleClient->authenticate($authCode); 

     //store credentials to disk 
     if(!file_exists(dirname($credentialsPath))){ 
      mkdir(dirname($credentialsPath), 0700, true); 
     } 

     //put the contents into the credential files 
     file_put_contents($credentialsPath, $accessToken); 
    } 

    $this->googleClient->setAccessToken($accessToken); 

    //refresh token if its expired 
    if($this->googleClient->isAccessTokenExpired()){ 
     $this->googleClient->refreshToken($client->getRefreshToken()); 

     file_put_contents($credentialsPath, $this->googleClient->getAccessToken()); 
    } 
} 

Я нашел причину проблемы без какого-либо решения в поле зрения. В моей консоли разработчика Google я попробовал поставить «http://localhost/» в раздел «Авторизованные редиректные URI». Это приводит к ошибке «Извините, проблема в том, что если вы ввели информацию, проверьте ее и повторите попытку. В противном случае проблема может возникнуть сама по себе, поэтому зайдите позже». Есть ли способ заставить Консоль разработчика Google принять перенаправление uri на локальном сервере?

+0

любой желающий помочь? –

ответ

3

Я получил его на работу. Мне нужно было вернуться в Google Developer Console и удалить проект, который я создал. Затем при создании нового проекта это позволило мне сохранить мой URL-адрес localhost. Проблема, которая происходила, заключалась в том, что когда я пошел, добавьте свой URL-адрес localhost в URL-адрес перенаправления, который, по-видимому, покажется невозможным. Когда я устанавливаю URL-адрес перенаправления, прежде чем нажимать кнопку «Создать», он принимает его просто отлично.

+1

Спасибо за отправку решения - я смог отредактировать существующий проект и добавить авторизированный URI перенаправления ... –

+0

Нет проблемного разработчика. Рад помочь. –

+4

Причина этого в том, что ваш секретный файл json вашего клиента, который вы загружаете, также нуждается в обновлении. Поэтому, если вы создаете свои учетные данные без uri и загружаете json, у json нет свойства redirect_uris. Если вы перейдете и добавите его в панель инструментов, вам нужно повторно загрузить секретный ключ клиента json и добавить его в свой проект. –

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