将状态变量传递给提供程序并从回调函数返回

时间:2013-09-14 18:00:16

标签: asp.net-mvc oauth oauth-2.0 dotnetopenauth google-oauth

我被告知DotNetOpenAuth可以将其他信息传递给状态变量,传递的值将存储在Google的回调字符串中。有人知道从哪里获取代码示例吗? Facebook,Twitter,雅虎和其他提供商也支持状态变量吗?

由于

更具体地说,在Microsoft.Web.WebPages.OAuth.OAuthWebSecurity中,RequestAuthentication方法没有传递代码参数的参数。这是否意味着DotNetOpenAuth最新版本没有默认支持?我是否需要在OAuthWebSecurity中使用RegisterClient方法来创建自定义客户端,而不是使用内置的RegisterGoogleClient,RegisterFacebookClient等?

3 个答案:

答案 0 :(得分:2)

“状态”变量是OAuth 2.0规范的一部分,第4.1.2节要求服务器在客户端发送时响应,因此声称执行OAuth 2的任何人都应该支持它。

对于学生:http://tools.ietf.org/html/rfc6749#section-4.1.2

答案 1 :(得分:0)

找到解决方案。回调函数之后的查询字符串放在“状态”变量中。例如,此函数中的From字符串在回调中从Google返回 -

public ActionResult ExternalLogin(string provider, string returnUrl, string from)
{
    return new ExternalLoginResult(provider, Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl, From = from}));
}

答案 2 :(得分:0)

MVC4附带的OAuthWebSecurity的Google客户端基于OpenID。您可能对the OAuth2 implementation that I wrote感兴趣。