且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

谷歌/ OAuth的2 - 自动登录

更新时间:2023-12-03 15:48:16

您应该可以使用下面的请求刷新的OAuth 2.0令牌:

  POST / O / oauth2 /令牌HTTP / 1.1
主持人:accounts.google.com
内容类型:应用程序/ x-WWW的形式urlen codeD

CLIENT_ID = 21302922996.apps.googleusercontent.com和放大器;
client_secret = XTHhXh1SlUNgvyWGwDk1EjXB和放大器;
refresh_token = 1 / 6BMfW9j53gdGImsixUH6kU5RsR4zwI9lUVX-tqf8JXQ&安培;
grant_type = refresh_token
 

正如在谷歌的OAuth 2.0文档

我只是尝试了一下使用curl,它按预期工作:

 卷曲-d CLIENT_ID = $ CLIENT_ID -d client_secret = $ CLIENT_SECRET -d refresh_token = $ REFRESH_TOKEN -d​​ grant_type = refresh_token https://accounts.google.com/o/oauth2/代币

{access_token:$ ACCESS_TOKEN,token_type:承载,expires_in:3600}
 

I'm playing a bit with OAuth 2.0 in combination with some Google API. Although the authorization process is quite easy, I'm facing a problem with the automatic authorization after the initial authorization has been completed.

So:

1. Authorization is done for the first time. (user grants access, I get the token etc etc)
2. User exits the application
3. User starts the application again
4. How to logon automatically here?

At point 4, I do have a refresh_token so I should just request a new token using that request_token. But I still keep getting 401 Unauthorized results on my calls.

So what I try to do is that my application can logon silently so that the user doesn't have to grant access every time.

You should be able to refresh OAuth 2.0 token using the following request:

POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded

client_id=21302922996.apps.googleusercontent.com&
client_secret=XTHhXh1SlUNgvyWGwDk1EjXB&
refresh_token=1/6BMfW9j53gdGImsixUH6kU5RsR4zwI9lUVX-tqf8JXQ&
grant_type=refresh_token

As pointed in Google OAuth 2.0 documentation.

I just tried it out using curl and it works as expected:

curl -d client_id=$CLIENT_ID -d client_secret=$CLIENT_SECRET -d refresh_token=$REFRESH_TOKEN -d grant_type=refresh_token https://accounts.google.com/o/oauth2/token

{"access_token":"$ACCESS_TOKEN","token_type":"Bearer","expires_in":3600}