Oauth 2.0 请求“plus.login”作用域后调用ProcessUserAuthorization时的BADDREQUEST

Oauth 2.0 请求“plus.login”作用域后调用ProcessUserAuthorization时的BADDREQUEST,oauth-2.0,google-plus,dotnetopenauth,google-oauth,Oauth 2.0,Google Plus,Dotnetopenauth,Google Oauth,我在将代码更新到新范围时遇到问题。目前我使用userinfo.profile,一切正常 根据新的plus.me范围,应用程序可以知道用户是谁,plus.login还提供对年龄、语言、圈子等的额外访问 如果我用plus.me替换userinfo.profile-一切正常:方法WebServerClient.RequestUserAuthorization授权用户,ProcessUserAuthorization给我一个令牌 但如果我改为询问plus.login scope,Google会向我的回调

我在将代码更新到新范围时遇到问题。目前我使用userinfo.profile,一切正常

根据新的plus.me范围,应用程序可以知道用户是谁,plus.login还提供对年龄、语言、圈子等的额外访问

如果我用plus.me替换userinfo.profile-一切正常:方法WebServerClient.RequestUserAuthorization授权用户,ProcessUserAuthorization给我一个令牌

但如果我改为询问plus.login scope,Google会向我的回调添加额外的查询参数,下一次调用WebServerClient.ProcessUserAuthorization失败,因为实现使用当前rul生成新的重定向url,将已知参数分条,并留下新的未知Google参数。他的重定向url与在Google Api控制台中注册的不匹配,Google服务器返回400响应

以下是来自NetOpenAuth.Messaging.Channel日志的plus.me作用域授权的成功响应:

Incoming HTTP request: GET http://localhost:40004/Me/LoginComplete?from=Google&state=TWXf6Zq3XYSlwyfCDt3GiQ&code=4/qC_KeuiykcVm1sayIyEdnBjiklxz.AoMfk5TqaXQcsNf4jSVKMpY-GxwThAI

After binding element processing, the received EndUserAuthorizationSuccessAuthCodeResponse (2.0) message is: 
    code: 4/qC_KeuiykcVm1sayIyEdnBjiklxz.AoMfk5TqaXQcsNf4jSVKMpY-GxwThAI
    state: TWXf6Zq3XYSlwyfCDt3GiQ
    from: Google
下面是plus.login范围的成功授权响应:

调用plus.me作用域的令牌将成功:

Prepared outgoing AccessTokenAuthorizationCodeRequestC (2.0) message for https://accounts.google.com/o/oauth2/token: 
    code: 4/qC_KeuiykcVm1sayIyEdnBjiklxz.AoMfk5TqaXQcsNf4jSVKMpY-GxwThAI
    redirect_uri: http://localhost:40004/Me/LoginComplete?from=Google
    grant_type: authorization_code
    client_id: 175802076419.apps.googleusercontent.com
    client_secret: ********
但是使用plus.login scope 3新参数authuser、prompt、session_state将被传输到redirect_url param:

一旦此重定向url与已注册url不匹配,我将收到错误:

https://accounts.google.com/o/oauth2/token returned 400 BadRequest: Bad Request
表示授权响应中需要参数代码和状态,并表示注意添加其他参数。但它也说

客户端必须忽略无法识别的响应参数

这是否意味着这是DNOA问题而不是谷歌问题

可能是DNOA必须将nullable responseUri参数添加到ProcessUserAuthorization并使用它,而不是从当前url猜测

除了使用谷歌图书馆,最简单的解决方法是什么

更新:

这是对/oauth的原始请求

Prepared outgoing EndUserAuthorizationRequestC (2.0) message for https://accounts.google.com/o/oauth2/auth: 
    client_id: 175802076419.apps.googleusercontent.com
    redirect_uri: http://localhost:40004/Me/LoginComplete?from=Google
    state: TWXf6Zq3XYSlwyfCDt3GiQ
    scope: https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/plus.me
    response_type: code

您触发accounts.google.com/o/oauth流的第一个URL是什么样子的?第一个登录URL是/Me/login。它包含POST表单,服务器根据表单内容将用户重定向到适当的提供者。我在DNOA github repo上创建了pull request 313。不需要您的URL,我们需要在返回您的登录页面之前查看URL和首先访问accounts.google.com/o/oauth的参数。哦,对不起。更新了请求详细信息的帖子。
https://accounts.google.com/o/oauth2/token returned 400 BadRequest: Bad Request
Prepared outgoing EndUserAuthorizationRequestC (2.0) message for https://accounts.google.com/o/oauth2/auth: 
    client_id: 175802076419.apps.googleusercontent.com
    redirect_uri: http://localhost:40004/Me/LoginComplete?from=Google
    state: TWXf6Zq3XYSlwyfCDt3GiQ
    scope: https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/plus.me
    response_type: code