谷歌oauth2.0 405错误

时间:2014-06-03 23:06:09

标签: oauth google-api google-oauth google-oauth2

我尝试使用以下链接使用谷歌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请求..

3 个答案:

答案 0 :(得分:4)

我可以通过几个步骤来访问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 CodeAccessToken的{​​{1}}。请注意,这需要作为HTTP POST 而不是HTTP Get发送。

RefreshToken

你应该得到一个像这样的JSon字符串。

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

现在您可以使用{ "access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw", "token_type" : "Bearer", "expires_in" : 3600, "refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4" } 并使用它来发出请求。但访问令牌只能持续1小时,然后在您需要使用Access_token获取新访问令牌之前到期。此外,如果您想要再次访问用户数据,则应将Refresh_token保存在某个位置,以便始终可以访问该数据。

第3步:使用Refreshtoken

refresh_token

这次你只会获得Access令牌,因为你的refreshtoken是好的,直到用户删除身份验证或你没有使用它6个月。

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

您可以在Google 3 Legged oauth2 flow

找到更多详细信息

答案 1 :(得分:0)

您似乎使用了错误的API,您应该使用https://accounts.google.com/o/oauth2/auth代替https://accounts.google.com/o/oauth2/token

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

答案 2 :(得分:0)

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

我在此link

上按照谷歌指南进行操作

它告诉我

  1. 通过/ o / oauth2 / auth =>获取验证码它起作用,作为指南中的回应

  2. 通过/ oauth2 / v3 / token =>获取访问令牌这是错误,状态代码405被响应

  3. 正确必须是/ oauth2 / token