Есть несколько шагов, чтобы получить доступ к 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