我正在开发一个小应用程序,该应用程序允许用户使用其Twitter帐户登录到网站。然后,一旦完成,我打算使用该帐户对Twitter API执行各种操作。但是,为了做到这一点,我需要先前获得的访问令牌和 secret ,但我不知道如何。
我在样板WebApp上使用.NET Core ASP.NET v5
。Twitter身份验证设置:
app.UseTwitterAuthentication(new TwitterOptions()
{
ConsumerKey = "BLAH",
ConsumerSecret = "BLAH"
});
用户成功登录了Twitter auth?
,如何检索存储的访问令牌和秘密我认为这是沿User.Identity.*
或User.Claims.*
的线路。
您只需要将这些值添加到用户对身份验证的索赔中。在您的startup.auth.cs中,您需要添加以下内容:
var twitterOptions = new Microsoft.Owin.Security.Twitter.TwitterAuthenticationOptions
{
ConsumerKey = /* Your App's Consumer Key */,
ConsumerSecret = /* Your App's Consumer Secret */,
Provider = new Microsoft.Owin.Security.Twitter.TwitterAuthenticationProvider
{
OnAuthenticated = (context) =>
{
context.Identity.AddClaim(new System.Security.Claims.Claim("urn:twitter:access_token", context.AccessToken, XmlSchemaString, "Twitter"));
context.Identity.AddClaim(new System.Security.Claims.Claim("urn:twitter:access_token_secret", context.AccessTokenSecret, XmlSchemaString, "Twitter"));
return Task.FromResult(0);
}
}
};
app.UseTwitterAuthentication(twitterOptions);
然后,当您需要值时,可以通过:
检索它们var twitterTokenClaim = user.Claims.FirstOrDefault(m => m.ClaimType.EndsWith("twitter:access_token"));
var twitterSecretClaim = user.Claims.FirstOrDefault(m => m.ClaimType.EndsWith("twitter:access_token_secret"));
不过,这些是实际的IdentityClaim
实例,因此您需要正确进行null检查,然后访问其ClaimValue
属性:
if (twitterTokenClaim != null && twitterSecretClaim != null)
{
// work with Twitter API
// Token and secret string values accessed via `twitterTokenClaim.ClaimValue`
// and `twitterSecretClaim.ClaimValue`, respectively
}