在asp.net mvc Twitter OAuth2登录后获取oauth凭据

Fra*_*ank 7 c# twitter asp.net-mvc asp.net-mvc-5

在测试了内置的MVC 5 OAuth2/OpenID提供程序后,我能够创建一个网站,允许我使用我的Twitter凭据进行身份验证.

我现在遇到的问题是,我还想在用户成功通过身份验证后,在网址中存储令牌(oauth_tokenoauth_verifier)Twitter帖子.我需要这些令牌,所以我可以允许用户直接从我的网站发布详细信息到他们的Twitter帐户.

Startup.Auth.cs中设置了TwitterAuthenticationOptions(见下文)后,我确实发现我所关注的令牌可以在上下文中找到,但解析这似乎是一个丑陋的解决方案.(((context.Response.Context).Request).QueryString)

 var tw = new TwitterAuthenticationOptions {
       ConsumerKey = "SecretKey",
       ConsumerSecret = "SecretSecret",
       SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
       Provider = new TwitterAuthenticationProvider() {
            OnAuthenticated = (context) => {
                context.Identity.AddClaim(new System.Security.Claims.Claim("urn:twitter:access_token", context.AccessToken, XmlSchemaString, "Twitter"));
                return Task.FromResult(0);
                        }
            }

  };

  app.UseTwitterAuthentication(tw);
Run Code Online (Sandbox Code Playgroud)

如何优雅地实施?对于Facebook我找到了一个实际检索其他信息的解决方案,这感觉类似......

获得-更多信息从 - 社会提供商使用的,在最VS-2013项目模板

jan*_*awa 0

您可以使用 Query 而不是 QueryString,然后使用 Get 方法从查询字符串中检索值。

context.Response.Context.Request.Query.Get("oauth_verifier");
context.Response.Context.Request.Query.Get("oauth_token"); or context.AccessToken
Run Code Online (Sandbox Code Playgroud)

其他需要注意的事情是您不需要 oauth_verifer 来发布数据。查看此处所需的标头。我建议您使用此处列出的库之一与 Twitter 进行交互。