Google Plus OAuth PHP 401 (неавторизованный)

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


person modesitt    schedule 31.07.2016    source источник
comment
Вы уверены, что можете выполнить запрос curl? .... возможно, у вас не включено расширение curl.   -  person Hackerman    schedule 04.08.2016


Ответы (1)


Вам нужно сбросить состояние вашего приложения, если оно отключено, чтобы обновить файл $tocken.

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

401: Invalid Credentials

Неверный заголовок авторизации. Используемый токен доступа просрочен или недействителен.

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

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

Также это четко прокомментировано в 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);
        }
person Amar Pratap    schedule 05.08.2016