我正在通过说明使用OAuth2在已安装的(Windows)应用程序中访问https://developers.google.com/identity/protocols/OAuth2InstalledApp页面上的Gmail。这一切似乎都很简单,直到我得到关于"做出令牌请求的部分"。 POST我必须做的一个参数是redirect_uri,它说的是#34;你从开发者控制台获得的重定向URI。"
我已经从开发者控制台获得了我的ClientID和ClientSecret,但无法看到我从中获取redirect_uri的任何地方。
我错过了什么?感谢。
答案 0 :(得分:1)
认证是一个三步或四步的过程
第一步是获取身份验证代码。此链接可以放在任何浏览器窗口中,它是HTTP GET
https://accounts.google.com/o/oauth2/auth?client_id= {的clientid} .apps.googleusercontent.com&安培; REDIRECT_URI =瓮:IETF:WG:OAuth的:2.0:OOB&安培;范围= https://www.googleapis.com/auth/analytics.readonly&response_type=code
一旦用户接受了访问权限,您将获得一个身份验证代码。
将该代码发送回服务器以获取刷新令牌和第一个访问令牌。这是一个HTTP POST。
https://accounts.google.com/o/oauth2/token
code=4/X9lG6uWd8-MMJPElWggHZRzyFKtp.QubAT_P-GEwePvB8fYmgkJzntDnaiAI&client_id={ClientId}.apps.googleusercontent.com&client_secret={ClientSecret}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&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"
}
访问令牌只能工作一个小时,之后它将过期,您需要使用刷新令牌来获取新的访问令牌。
这也是HTTP Post
https://accounts.google.com/o/oauth2/token
client_id={ClientId}.apps.googleusercontent.com&client_secret={ClientSecret}&refresh_token=1/ffYmfI0sjR54Ft9oupubLzrJhD1hZS5tWQcyAvNECCA&grant_type=refresh_token
响应
{
"access_token" : "ya29.1.AADtN_XK16As2ZHlScqOxGtntIlevNcasMSPwGiE3pe5ANZfrmJTcsI3ZtAjv4sDrPDRnQ",
"token_type" : "Bearer",
"expires_in" : 3600
}
代码已从我的教程Google 3 legged oauth2中删除,它有更多的解释。