Google oauth2.0 405 error



我试图使用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&
 login_hint=myemail@gmail.com

我在浏览器中做了上面的get请求…

有几个步骤可以访问谷歌,我更容易向您展示完整的流程。我猜你被困在第二步了,因为你没有把它作为帖子发送。

步骤1:请求访问

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

这只是显示要求他们批准您的窗口。一旦用户批准访问,您将获得一次性认证码。

step2: Exchange Authentication Code for AccessToken and 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
}

你可以在这里找到更多的详细信息谷歌3腿oauth2流程

看来你使用了错误的api,你应该使用https://accounts.google.com/o/oauth2/auth而不是https://accounts.google.com/o/oauth2/token

您得到错误405的原因是https://accounts.google.com/o/oauth2/token只能通过POST调用,它是为了获取令牌。您需要首先获得授权码,然后将其交换为令牌。

请注意/oauth2/v3/token和/oauth2/token

我遵循谷歌的指南在这个链接

显示如下

  1. 获取认证码由/o/oauth2/auth =>它工作,响应如指南

  2. get access token by/oauth2/v3/token =>错误,响应状态码405

正确的必须是/oauth2/token

相关内容

  • 没有找到相关文章

最新更新