twitter - LinqToTwitter 检查授权

标签 twitter oauth authorization linq-to-twitter

我有这个工作代码:

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/

相关文章:

java - 如何使用动态 URL 匹配器配置配置 Spring security Oauth 2.0?

java - 用于 Web 应用程序的 Spring OAuth 库

javascript - 如何使用 next.js 获取客户端 cookie?

python - 导入错误 : No module named 'setuptools'

javascript - 如何将 "&"更改为 & for twitter javascript 程序

java - 使用 Twitter Streaming Api 时出现 Scribe java 错误

angularjs - 使用nodejs进行LDAP身份验证

java - Jersey REST-Servlet 中的 RolesAllowed 注释不起作用

http - 我可以从我的应用程序提交带有谷歌验证码的表单吗?

php - Facebook/Twitter/Google+ 自定义对话框和带有计数器的按钮?