LinqToTwitter проверка авторизации
У меня есть этот рабочий код:
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, как я могу обнаружить на этой странице, что приложение больше не имеет разрешения на публикацию твитов для пользователя и нуждается в повторной авторизации?
1 ответ
Вы можете запросить 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);
}
Если это не удается, вы можете принудительно выполнить авторизацию, удалив ключи учетных данных пользователя и авторизуясь только с помощью ConsumerKey/ConsumerSecret. Это приведет пользователя на страницу Twitter, чтобы снова авторизовать ваше приложение. Затем вы можете повторно сохранить эти учетные данные пользователя, если они изменились.