我有一个项目要求ASP.Net应用程序使用谷歌凭据,因此授权在oauth 2.0中。
我已经形成了对google API的授权的有效请求,但是在哈希字符“#”之后返回响应(以及带有它的令牌)。有点像:
[示例http链接:] myredirecturi.com/oauthcallback#token=thetokenvalue ...
我所期待的是它是以查询字符串的格式,即在问号“?”之后:
[示例http链接:] myredirecturi.com/oauthcallback?token=thetokenvalue ...
我遇到此问题的原因是我无法在服务器端ASP.net中引用令牌。
要调用此请求,基本上我正在做的是对Google的网址执行Response.redirect,但似乎我认为我需要客户端响应。
所以,我的问题是,如何让google以查询字符串回复?
如果有帮助,这就是我的大部分工作基础:https://developers.google.com/accounts/docs/OAuth2Login
感谢。
答案 0 :(得分:5)
在您的身份验证请求网址中,您是否设置了response_type=token
?这将导致服务器返回片段中的访问令牌。这是此处描述的客户端流程:https://developers.google.com/accounts/docs/OAuth2UserAgent
如果您在网络服务器中执行OAuth(听起来像是这样),您应该使用此处描述的Web服务器流程:https://developers.google.com/accounts/docs/OAuth2WebServer - 您指定response_type=code
将导致授权代码,您可以在后续请求中交换刷新令牌和访问令牌。