Google Api,当我有访问令牌和之前的刷新令牌时,如何刷新用户令牌

时间:2015-12-08 12:42:18

标签: php oauth-2.0 google-api

当我使用纯PHP而没有Google Api库时,我有以前的刷新令牌和访问令牌,是否可以刷新Google Api令牌?我在数据库中存储许多用户刷新和访问令牌。

我正在使用此地址的网址:

https://developers.google.com/identity/protocols/OAuth2WebServer?hl=en#creatingcred

并使用此地址:

https://accounts.google.com/o/oauth2/v2/auth?
 scope=email%20profile&
 state=security_token%3D138r5719ru3e1%26url%3Dhttps://oa2cb.example.com/myHome&
 redirect_uri=https%3A%2F%2Foauth2-login-demo.appspot.com%2Fcode&,
 response_type=code&
 client_id=812741506391.apps.googleusercontent.com

我一直被重定向到某个地方,而不是获得新的access token。 但是,为什么我必须放redirect_uri

另外,在我的Google API管理器的“凭据”部分中,我有一些Client IDClient secret,但Client ID 1076711322609-s9mrrfp3t8gto2qkrj4ud3jjhr3rr0ph.apps.googleusercontent.com与此client_id=812741506391.apps.googleusercontent.com不同?{/ p>

所以问题是,如何使用访问令牌访问用户Google API端点,并使用PHP(REST调用)每小时刷新这些令牌,而无需任何提示,登录和密码。它甚至可能吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

经过多次尝试,我找到了可行的解决方案。

<强> === EDIT ==== @DaImTo答案要好得多

发布

https://developers.google.com/oauthplayground/refreshAccessToken

<强>接头

Content-Type: application/json

<强>体:

{
    "refresh_token": "YOUR_PREVIOUS_REFRESH_TOKEN"
}

答案 1 :(得分:0)

您可以获取一个新的access_token,您将存储在数据库中的refresh_token和 HTTP Post 更新为以下网址。 注意:grant_type = refresh_token

https://accounts.google.com/o/oauth2/token
client_id={ClientId}.apps.googleusercontent.com&client_secret={ClientSecret}&refresh_token=1/ffYmfI0sjR54Ft9oupubLzrJhD1hZS5tWQcyAvNECCA&grant_type=refresh_token

回复

  

{&#34; access_token&#34; :   &#34; ya29.1.AADtN_XK16As2ZHlScqOxGtntIlevNcasMSPwGiE3pe5ANZfrmJTcsI3ZtAjv4sDrPDRnQ&#34 ;,   &#34; token_type&#34; :&#34; Bearer&#34;,&#34; expires_in&#34; :3600}