Xamarin Android Xamarin.Auth - Twitter
У меня проблема с реализацией логина в твиттере на моем Android Xamarin. Я включил компонент Xamarin.Auth, и он отлично работает для Facebook. Fot twitter auth.Completed событие не вызывается... Я создал образец приложения на портале Twitter Dev.
Вот мой код из приложения:
private void LoginTwitter()
{
var auth = new OAuth1Authenticator(
consumerKey: "3v7rOXkdexGYhQmr3HVhtGgPO",
consumerSecret: "mGhRjee87tAp4X0vHUmMIohWoYy0JGg9zFGyin7CigFP64y3j5",
requestTokenUrl: new Uri("https://api.twitter.com/oauth/request_token"),
authorizeUrl: new Uri("https://api.twitter.com/oauth/authorize"),
accessTokenUrl: new Uri("https://api.twitter.com/oauth/access_token"),
callbackUrl: new Uri("http://twitter.com")
);
auth.AllowCancel = true;
StartActivity(auth.GetUI(this));
auth.Completed += (s, eventArgs) =>
{
if (eventArgs.IsAuthenticated)
{
Account loggedInAccount = eventArgs.Account;
//save the account data for a later session, according to Twitter docs, this doesn't expire
AccountStore.Create(this).Save(loggedInAccount, "Twitter");
}
};
}
Я надеюсь, что кто-то поможет.
2 ответа
Решение
Хорошо, я решил проблему самостоятельно. При создании нового OAuth1Authenticator CallBack Url должен быть установлен на mobile.twitter.com, а не twitter.com
callbackUrl: new Uri("http://mobile.twitter.com")
После этого вы сможете получить токен.
Надеюсь, это поможет кому-то в будущем.:)
РЕДАКТИРОВАТЬ: вам нужно использовать http://mobile.twitter.com/home
сейчас-
Я думаю, что вам нужно переместить Completed
обработка событий, как я считаю, StartActivity
блокирует
private void LoginTwitter()
{
var auth = new OAuth1Authenticator(
consumerKey: "3v7rOXkdexGYhQmr3HVhtGgPO",
consumerSecret: "mGhRjee87tAp4X0vHUmMIohWoYy0JGg9zFGyin7CigFP64y3j5",
requestTokenUrl: new Uri("https://api.twitter.com/oauth/request_token"),
authorizeUrl: new Uri("https://api.twitter.com/oauth/authorize"),
accessTokenUrl: new Uri("https://api.twitter.com/oauth/access_token"),
callbackUrl: new Uri("http://twitter.com")
);
auth.AllowCancel = true;
auth.Completed += (s, eventArgs) =>
{
if (eventArgs.IsAuthenticated)
{
Account loggedInAccount = eventArgs.Account;
//save the account data for a later session, according to Twitter docs, this doesn't expire
AccountStore.Create(this).Save(loggedInAccount, "Twitter");
}
};
StartActivity(auth.GetUI(this));
}