我有这个工作代码:
public AspNetAuthorizer Authoriser { get; set; }
protected async void Page_Load(object sender, EventArgs e)
{
var currentUser = v2.Membership.Functions.GetLoggedInAsUser();
Authoriser = v3.Twitter.Auth.GetUserAuthorizer(currentUser.UserID,
v3.Arcade.Settings.TwitterScirraArcadeAppAppName, v3.Arcade.Settings.TwitterScirraArcadeAppConsumerKey,
v3.Arcade.Settings.TwitterScirraArcadeAppConsumerSecret);
if (!Page.IsPostBack && Request.QueryString["oauth_token"] != null)
{
await Authoriser.CompleteAuthorizeAsync(Request.Url);
var credentials = Authoriser.CredentialStore;
v3.Twitter.Auth.SaveAuthorisationDetails(currentUser.UserID,
v3.Arcade.Settings.TwitterScirraArcadeAppAppName, credentials.OAuthToken, credentials.OAuthTokenSecret,
credentials.ScreenName);
}
else
{
if (!Authoriser.CredentialStore.HasAllCredentials())
{
await Authoriser.BeginAuthorizeAsync(new Uri("https://127.0.0.1/newarcade/twitterpopup.aspx"));
}
}
}
如果未存储授权,则重定向到 Twitter 身份验证请求。否则,它将继续在页面上显示。
我面临的问题是,当用户通过其 Twitter 帐户撤销对应用程序的访问权限时,我如何在此页面上检测到该应用程序不再有权为用户发布推文并需要重新授权?
最佳答案
您可以查询VerifyCredentials:
try
{
var verifyResponse =
await
(from acct in twitterCtx.Account
where acct.Type == AccountType.VerifyCredentials
select acct)
.SingleOrDefaultAsync();
if (verifyResponse != null && verifyResponse.User != null)
{
User user = verifyResponse.User;
Console.WriteLine(
"Credentials are good for {0}.",
user.ScreenNameResponse);
}
}
catch (TwitterQueryException tqe)
{
Console.WriteLine(tqe.Message);
}
如果失败,您可以通过删除用户的凭据 key 并仅使用 ConsumerKey/ConsumerSecret 进行授权来强制授权。这会将用户带到 Twitter 页面以再次授权您的应用程序。然后您可以重新保存这些用户凭据,以防它们发生更改。
关于twitter - LinqToTwitter 检查授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27233873/