Według the TwitterCore documentation:Android Fabric TwitterCore logowanie bez TwitterLoginButton
Najprostszym sposobem uwierzytelniania użytkownika wykorzystuje TwitterLoginButton.
Jak uwierzytelnić użytkownika bez the TwitterLoginButton?
Według the TwitterCore documentation:Android Fabric TwitterCore logowanie bez TwitterLoginButton
Najprostszym sposobem uwierzytelniania użytkownika wykorzystuje TwitterLoginButton.
Jak uwierzytelnić użytkownika bez the TwitterLoginButton?
Prawdopodobnie będziesz chciał zadzwonić do zwykłego mechanizmu Twitter OAuth poprzez coś takiego jak Twitter4J. Jeśli korzystasz z TwitterLoginButton, wszystko to jest opakowane za pomocą funkcji w zestawie Twitter Kit.
Jeśli twoim celem jest, aby nie dodać TwitterLoginButton w układzie (ów), należy utworzyć TwitterLoginButton programowo i ręcznie wykonać zdarzenie kliknij:
TwitterLoginButton button = new TwitterLoginButton(this);
button.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
// Do something with result, which provides a TwitterSession for making API calls
}
@Override
public void failure(TwitterException exception) {
// Do something on failure
}
});
button.performClick();
Kluczowym punktem tutaj jest, że po utworzeniu tego przycisku, możesz zadzwonić pod numer button.performClick()
w dogodnym dla ciebie momencie.
Spójrz na TwitterAuthClient
.
Przykładem użycia może być coś jak (gdzie getCallingActivity() można zastąpić swoje powołanie Activity
)
TwitterAuthClient twitterAuthClient = new TwitterAuthClient();
twitterAuthClient.authorize(getCallingActivity(), new Callback<TwitterSession>() {
@Override
public void success(final Result<TwitterSession> result) {
final TwitterSession sessionData = result.data;
// Do something with the returned TwitterSession (contains the user token and secret)
}
@Override
public void failure(final TwitterException e) {
// Do something on fail
}
});
Następnie delegował onActivityResult do TwitterAuthClient
,
twitterAuthClient.onActivityResult(requestCode, resultCode, data);
Nie musisz tworzyć przycisku dla tego. Proszę zobaczyć moją odpowiedź. – AndrewSmiley
@AndrewSmiley Tak, moja odpowiedź nie potrzebuje przycisku (TwitterLoginButton). W takim przypadku wystarczy umieścić ten fragment w wydarzeniu, w którym chce. : D – deubaka
Dobra rozmowa! Ponadto, nie zdawałem sobie sprawy, jak podobne są nasze odpowiedzi, dopóki nie opublikowaliśmy moich! :/ – AndrewSmiley
nie robić trzeba utworzyć przycisk do tego. Zasadniczo, jeśli zagłębisz się w niektóre zajęcia, przekonasz się, że kod jest stosunkowo prosty. Oto jak to zrobiłem. Wystarczy zadzwonić TwitterAuthClient().authorize(Activity, Callback<TwitterSession)
pełny kod:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.core.TwitterSession;
import com.twitter.sdk.android.core.identity.TwitterAuthClient;
/**
* Created by Andrew on 6/23/15.
*/
public class ConnectTwitterActivity extends Activity {
//The auth client itself
/*you can abstract this and call TwitterCore.getInstance().login()
but basically that call is doing this one..
*/
TwitterAuthClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//instanciate our client
client = new TwitterAuthClient();
//make the call to login
client.authorize(this, new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
//feedback
Toast.makeText(getApplicationContext(), "Login worked", Toast.LENGTH_LONG).show();
}
@Override
public void failure(TwitterException e) {
//feedback
Toast.makeText(getApplicationContext(), "Login failed", Toast.LENGTH_LONG).show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//this method call is necessary to get our callback to get called.
client.onActivityResult(requestCode, resultCode, data);
}
}
Dlaczego jest to odrzucane? Ten kod działa w aplikacji na żywo, która jest dostępna na rynku Android .... – AndrewSmiley
Dzięki, że było oczywiste rozwiązanie. Dokumentacja sugeruje, że istnieje inny sposób, który nie używa przycisku LoginButton, ale może nie. –
Istnieje TwitterCore.getInstance(). LogIn (getActivity(), twitterCallback), ale jest błąd, w którym jeśli go anulujesz, klient Twittera nie otrzyma onActivityResult, więc musiałem programowo utworzyć przycisk i call performClick anyway – Captnwalker1
Nie musisz tworzyć przycisku dla tego. Proszę zobaczyć moją odpowiedź. – AndrewSmiley