我尝试发布几个范围值,以允许我的应用程序的一些谷歌服务.
我尝试了两个输入字段
<input type="hidden" name="scope" value="https://www.googleapis.com/auth/calendar" />
<input type="hidden" name="scope" value="https://www.googleapis.com/auth/userinfo.email" />
字符串
和一个带有+分隔符的输入字段
<input type="hidden" name="scope" value="https://www.googleapis.com/auth/calendar+https://www.googleapis.com/auth/userinfo.email" />
型
当我发送我的表单只有一个范围它的工作.否则与sereval范围值谷歌重定向我与此错误描述:
http://localhost:49972/redirect.aspx#error=invalid_request&error_description=OAuth+2+parameters+can+only+have+a+single+value:+scope&error_uri=http://code.google.com/apis/accounts/docs/OAuth2.html
型
在谷歌开始使用oAuth2时,它使用两个范围值。
下面是我的代码:
<form id="form1" method="post" action="https://accounts.google.com/o/oauth2/auth?" >
<div>
<input type="hidden" name="response_type" value="code" />
<input type="hidden" name="client_id" value="my client id" />
<input type="hidden" name="redirect_uri" value="http://localhost:49972/redirect.aspx" />
<input type="hidden" name="scope" value="https://www.googleapis.com/auth/calendar" />
<input type="hidden" name="scope" value="https://www.googleapis.com/auth/userinfo.email" />
<input type="hidden" name="state" value="/profile" />
<input type="submit" value="go" />
</div>
</form>
型
3条答案
按热度按时间anauzrmj1#
当你把它们组合成一个字段时,你走对了路。请求中应该只有一个范围参数,值之间用空格分隔。如果你把它放在这样的表单中,浏览器会为你编码空格。
字符串
ef1yzkbh2#
除了Steve Bazyl的回答。当为同一个Google服务应用多个作用域时,作用域的顺序似乎很重要。F.e这个字符串按预期工作:
字符串
而这个对我来说不起作用:
型
但我在文档中没有找到任何相关信息。
c0vxltue3#
为了清晰起见,您可以将所有作用域放在一个数组中:
字符串