我尝试使用以下链接使用谷歌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请求..
答案 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 Code
和AccessToken
的{{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
找到更多详细信息
答案 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
上按照谷歌指南进行操作它告诉我
通过/ o / oauth2 / auth =>获取验证码它起作用,作为指南中的回应
通过/ oauth2 / v3 / token =>获取访问令牌这是错误,状态代码405被响应
正确必须是/ oauth2 / token