当我使用纯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 ID
和Client secret
,但Client ID
1076711322609-s9mrrfp3t8gto2qkrj4ud3jjhr3rr0ph.apps.googleusercontent.com
与此client_id=812741506391.apps.googleusercontent.com
不同?{/ p>
所以问题是,如何使用访问令牌访问用户Google API端点,并使用PHP(REST调用)每小时刷新这些令牌,而无需任何提示,登录和密码。它甚至可能吗?
答案 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}