授权时,Google Oauth会发出问题

时间:2014-05-26 01:54:30

标签: oauth-2.0 google-oauth

在使用Oauth 2.0()的Google授权时,我遇到了问题。

我的应用程序重定向URI是

http://localhost/google/c.php

我正在接收来自Google的get请求方法的access_token,但它会使用以下给定的网址发送数据(在通过登录同意后)

http://localhost/google/c.php#access_token=ya29.IgCM3ATGrzegCR8AATDlE-cRiYWIUVZhQKCJv6hw2nKTC9jJUYDfDieThjcq8A&token_type=Bearer&expires_in=3600

而不是

http://localhost/google/c.php?access_token=ya29.IgCM3ATGrzegCR8AAADlE-cRiYWIUVZhQKCJv6hw2nKTC9jJUYDfDieThjcq8A&token_type=Bearer&expires_in=3600

我不明白我为什么要#而不是?在查询URL的字符串之前。

我正在调用以下URL来启动此授权过程。

https://accounts.google.com/o/oauth2/auth?response_type=token&client_id=539024181015-s12j23s8fshbtv0g1n5ajrtml8mheh5c.apps.googleusercontent.com&redirect_uri=http://localhost/google/c.php&scope=https://www.googleapis.com/auth/analytics.readonly

2 个答案:

答案 0 :(得分:3)

如果您使用OAuth 2.0进行客户端应用程序,则使用的是Implicit Grant flow

隐式流程是为使用脚本语言(如JavaScript)在浏览器中实现的客户端设计的。

在隐式流中使用散列片段的原因是该片段不会在HTTP请求消息中发送。这样,中间服务器/路由器就不会拦截访问令牌。

答案 1 :(得分:1)

如果您想获取服务器的访问令牌,您应该要求授权代码并交换access_token的代码(如果您还请求脱机access_type,则可能需要刷新令牌)。以下是Google OAuth2网络服务器流程的文档:https://developers.google.com/accounts/docs/OAuth2WebServer