2016-07-31 3 views
1

Я пытаюсь настроить аутентификацию с помощью google плюс с помощью their tutorial. Я следовал инструкциям дословно, меняя client id и client secret в signin.php. Для записи API google plus API включен в консоли разработчика Google. Я также обновляю права доступа к файлам (chmod +x signin.php и chmod -R 555 vendor/). Однако при загрузке моего URL-адреса аутентификации (который находится в подкаталоге auth_test/ моего домена и нажав кнопку входа, консоль выдает 401 (unauthorized) для отправленного get запрошенного запроса. /activites. Я исследовал проблему и вижу, что это может быть вызвана неверным маркером, но я не вижу, как это может быть, потому что все было установки в singin.php. Большая помощь была бы оценена ...Google Plus OAuth PHP 401 (неавторизованный)

+0

Вы уверены, что можете выполнить запрос 'rotor'? .... возможно, у вас нет расширения curl. – Hackerman

ответ

1

Вам необходимо сбросить состояние вашего приложения, если отсоединен, чтобы обновить $tocken.

Документы Google API по обработке ошибок API

401: Invalid Credentials 

Неверный заголовок авторизации. Маркер доступа, который вы используете, либо истек или недействителен.

{ "error": { 
>  "errors": [ 
>  { 
>   "domain": "global", 
>   "reason": "authError", 
>   "message": "Invalid Credentials", 
>   "locationType": "header", 
>   "location": "Authorization", 
>  } 
>  ], 
>  "code": 401, 
>  "message": "Invalid Credentials" } } 

Предложенное действие: Обновить маркер доступа с помощью долгоживущей токен обновления. Если это не удается, направить пользователь через поток OAuth, , как описано в Выдавшем Вашем App

Кроме того, его явно комментировал в singin.php на линии нет. 98:

// Normally the state would be a one-time use token, however in our 
    // simple case, we want a user to be able to connect and disconnect 
    // without reloading the page. Thus, for demonstration, we don't 
    // implement this best practice. 
    //$app['session']->set('state', ''); 

Таким образом, в вашем случае кажется, что ваше приложение отключается, и, таким образом, вызывая $token пустеть. Следовательно, форсирование этого кодового блока по строке нет: 91

if (empty($token)) { 
     // Ensure that this is no request forgery going on, and that the user 
     // sending us this connect request is the user that was supposed to. 
     if ($request->get('state') != ($app['session']->get('state'))) { 
      return new Response('Invalid state parameter', 401); 
     }