本文介绍了oauth2 的多个范围值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试发布几个范围值以允许我的某些谷歌服务的应用程序......

我尝试了两个输入字段

和一个带有 + 分隔符的输入字段

当我只发送一个范围的表单时它可以工作.否则,使用 sereval 范围值 google 使用此错误描述重定向我:

http://localhost:49972/redirect.aspx#error=invalid_request&error_description=OAuth+2+parameters+can+only+have+a+single+值:+scope&error_uri=http://code.google.com/apis/accounts/docs/OAuth2.html

在 google 入门 oAuth2 中,它适用于两个范围值.

这是我的代码:

 

</表单>

解决方案

当您将它们合并为一个字段时,您走在正确的轨道上.请求中应该只有一个范围参数,值之间用空格分隔.如果你把它放在这样的形式中,浏览器会为你编码空间.

I try to post several scope values to allow my application for some google service...

I tried with two input field

<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" />

and with one input field with + separator

<input type="hidden" name="scope" value="https://www.googleapis.com/auth/calendar+https://www.googleapis.com/auth/userinfo.email" />

When I send my form with only one scope It work.otherwise with sereval scope value google redirect me with this error description :

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

In the google getting started with oAuth2 it works with two scope values.

Here is my code :

  <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>
解决方案

You were on the right track when you combined them to a single field. There should be only one scope parameter in the request, with the values separated by spaces. If you're putting it in a form like that, the browser will take care of encoding the space for you.

<input type="hidden" name="scope" value="https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email" />

这篇关于oauth2 的多个范围值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-11 07:03