Google oauth2.0 ошибка 405

Я пытаюсь использовать google oauth по ссылке ниже, но получаю ошибку 405,

Подскажите, пожалуйста, параметры правильные?

client_id = changed to a diff value
response_type = code
scope= openid%20email
redirecturl = given the value based on what I registered in console.developers.com
login_hint = my gmail id..

https://accounts.google.com/o/oauth2/token?
 client_id=690178314820-85fvo4eq56se4mppdaf0pt6tnnjo552&
 response_type=code&
 scope=openid%20email&
 redirect_uri=http://test.webfactional.com&
 state=security_token%3D138r5719ru3e1%26url%3Dhttps://oa2cb.example.com/myHome&
 [email protected]

Я сделал вышеуказанные запросы на получение в браузере.


person user1050619    schedule 03.06.2014    source источник


Ответы (3)


Есть несколько шагов, чтобы получить доступ к Google проще, чтобы я мог показать вам весь процесс. Я предполагаю, что вы застряли на втором шаге, потому что не отправляете его как сообщение.

Шаг 1. Запросите доступ

https://accounts.google.com/o/oauth2/auth?client_id={clientid}.apps.googleusercontent.com&redirect_uri={From console}&scope=openid%20email&response_type=code

Это просто отображает окно с просьбой одобрить вас. Как только пользователь подтвердит доступ, вы получите одноразовый код аутентификации.

Шаг 2. Обменяйте Authentication Code на AccessToken и RefreshToken. Обратите внимание, что это должно быть отправлено как HTTP POST, а не HTTP Get.

https://accounts.google.com/o/oauth2/token
code={Authentication Code from step 1}&client_id={ClientId}.apps.googleusercontent.com&client_secret={ClientSecret}&redirect_uri=={From console}&grant_type=authorization_code

вы должны вернуть строку JSON, выглядящую примерно так.

{
"access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4"
}

Теперь вы можете взять этот Access_token и использовать его для своих запросов. Но токены доступа действительны только в течение 1 часа, а затем срок их действия истекает до того, как вам нужно использовать Refresh_token, чтобы получить новый токен доступа. Кроме того, если вы хотите снова получить доступ к данным своих пользователей, вам следует сохранить refresh_token какое-то место, которое позволит вам всегда получать доступ к этим данным.

Шаг 3. Используйте Refreshtoken

https://accounts.google.com/o/oauth2/token
client_id={ClientId}.apps.googleusercontent.com&client_secret={ClientSecret}&refresh_token={RefreshToken from step 2}&grant_type=refresh_token

На этот раз вы вернете только токен доступа, потому что ваш токен обновления хорош до тех пор, пока пользователь не удалит аутентификацию или вы не использовали его в течение 6 месяцев.

{
"access_token" : "ya29.1.AADtN_XK16As2ZHlScqOxGtntIlevNcasMSPwGiE3pe5ANZfrmJTcsI3ZtAjv4sDrPDRnQ",
"token_type" : "Bearer",
"expires_in" : 3600
}

Вы можете найти более подробную информацию об этом здесь Трехсторонний поток oauth2 Google

person DaImTo    schedule 04.06.2014
comment
Первый шаг работал нормально. На втором соединение прошло нормально, но я получил следующий ответ.... access_token, token_type, expires_in и id_token.. Я ничего не вижу в качестве токена обновления. Можно ли считать id_token токеном обновления ? - person user1050619; 08.06.2014
comment
Я установил 'access_type':'offline', как указано в документе Google, чтобы получить refresh_token, но получаю следующую ошибку error_description: параметр не разрешен для этого типа сообщения: access_type\n}' - person user1050619; 08.06.2014
comment
Это еще попросить Принять, есть вариант без этого? - person kicaj; 18.11.2014

Кажется, вы используете неправильный API, вы должны использовать https://accounts.google.com/o/oauth2/auth вместо https://accounts.google.com/o/oauth2/token.

Причина, по которой вы получаете ошибку 405, заключается в том, что https://accounts.google.com/o/oauth2/token может вызываться только POST и для получения токена. Вам нужно сначала получить код авторизации, а затем обменять его на токен.

person Owen Cao    schedule 04.06.2014
comment
Спасибо....accounts.google.com/o/oauth2/token получит мне токен... Как я получу авторизацию... Какую ссылку URL нужно использовать? - person user1050619; 04.06.2014
comment
используйте https://accounts.google.com/o/oauth2/auth?client_id=YOUR_CLIENTID&response_type=code&scope=YOUR_SCOPE&redirect_uri=YOUR_REDIRECTURI Вы можете ссылаться на это - person Owen Cao; 04.06.2014
comment
Я использовал указанный выше токен для изменения ссылки с помощью аутентификации, но он не работает - person user1050619; 04.06.2014

Пожалуйста, обратите внимание на это /oauth2/v3/token и /oauth2/token

Я следую руководству Google по этой ссылке.

Это показывает мне следующее

  1. получить код аутентификации с помощью /o/oauth2/auth => это работает, ответ как пример в руководстве

  2. получить токен доступа с помощью /oauth2/v3/token => это ошибка, код состояния 405 отвечает

Правильным должен быть /oauth2/token

person Lee Tuấn    schedule 15.12.2014