2013-08-29 2 views
0

Я пытаюсь google plus api для входа третьей стороны на мой веб-сайт.Ошибка при получении токена доступа OAuth2, сообщение: 'invalid_request

Я использую класс метод Google_Client createAuthUrl для создания URI для пользователя войти, и страница будет перенаправлять на моей странице веб-сайта, чтобы завершить процесс, , но когда я использую метод Google_Client.authenticate проверить результат, я получил следующее сообщение об ошибке,

ошибка получения маркера доступа OAuth2, сообщение: «invalid_request

так, как я могу проверить, где же ошибка от? возможно, в сессии или где-то

+0

Rfer https://developers.google.com/accounts/docs/OAuth2WebServer и шаг за шагом –

+0

Что вы сделали с кодом аутентификации из обратного вызова? – roninblade

+0

Вы можете использовать этот код для извлечения маркера для своего сервера. Просто передайте код на свой сервер, который затем может обменять код для токена доступа, чтобы разрешить как ваш клиент, так и сервер. https://developers.google.com/+/web/signin/server-side-flow – Joanna

ответ

2

Я сам столкнулся с этой проблемой. Как оказалось, я не был последователен в построении клиента. Убедитесь, что ваш urid перенаправления не включает возвращаемую строку запроса, содержащую код аутентификации!

Например, это не будет работать:

$client->setRedirectUri('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); 

REQUEST_URI будет отличаться, когда пользователь возвращается от Google.

+0

+1 для указания меня в правильном направлении. В моем случае клиент javascript использует API Google (gapi), чтобы предоставить токен доступа серверу с использованием метода grantOfflineAccess. Согласно руководству Google на странице https://developers.google.com/identity/sign-in/web/server-side-flow#step_6_send_the_authorization_code_to_server метод grantOfflineAccess вызывается с помощью json-параметра ({redirect_uri: postmessage}), если нет перенаправления, определенные для приложения google. В этом случае сервер должен вызывать $ client-> setRedirectURi ('postmessage'); перед вызовом метода аутентификации. – jkincali