Аутентификация Twitter Android-FirebaseUI: как публиковать сообщения от имени пользователя, если у меня есть токен доступа и секрет доступа в приложении Android? Достаточно ли этого?

Я успешно вошел в систему и получил токен доступа к твиттеру и секрет доступа к твиттеру, используя firebase-ui-auth [https://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md][1]:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SIGN_IN && resultCode == RESULT_OK) {
        IdpResponse response = IdpResponse.fromResultIntent(data);
       //twitter access token
        response.getIdpToken();
        //twitter access token secret
        response.getIdpSecret();
    }
}

Я хочу публиковать сообщения от имени пользователя (в их учетных записях, а не в моей), используя эти два токена, которые я сохраню в общих настройках.

1) Достаточно ли этих двух токенов для публикации в учетной записи пользователя? 2) Как мне опубликовать что-то, используя эти два токена? Кажется, я не могу найти подходящие документы для моего конкретного случая, обработка twitter API для Android очень плохая.


person Juan    schedule 25.11.2016    source источник


Ответы (1)


Я уже решил это сам, используя ткань и ее класс TweetComposer.....

сначала вам нужно инициализировать ткань в классе начальной загрузки вашего приложения.

Fabric.with(this, new Twitter(authConfig));

затем в классе, в котором вы хотите сделать твит, вы получаете экземпляр firebase, чтобы получить вошедшего в систему пользователя, а затем вы устанавливаете потребительский ключ и секрет Twitter, которые вы получили при входе в пользовательский интерфейс firebase https://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md, для дальнейшего использования, чтобы получить два токена, необходимых для твита от имени пользователя, вы можете сделать это, как указано в ссылке:

Чтобы получить токен ID, возвращенный IDP, вы можете извлечь IdpResponse из результата Intent.

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        IdpResponse idpResponse = IdpResponse.fromResultIntent(data);
        startActivity(new Intent(this, WelcomeBackActivity.class)
                .putExtra("my_token", idpResponse.getIdpToken()));
    }
}

Twitter also returns an AuthToken Secret which can be accessed with idpResponse.getIdpSecret().

и теперь у вас есть все, что вам нужно:

    mAuth = FirebaseAuth.getInstance();

            if (mAuth.getCurrentUser() != null) {
                // already signed in

                twitter_consumer_key= preferences.getString("TWITTER_CONSUMER_KEY","");
                twitter_consumer_secret= preferences.getString("TWITTER_CONSUMER_SECRET","");

                TwitterAuthConfig authConfig =  new TwitterAuthConfig(twitter_consumer_key, twitter_consumer_secret);
         //setting up fabric       
         Fabric.with(this, new TwitterCore(authConfig), new TweetComposer());


            }

and then let's say I want to tweet from a custom button onClick:

        ImageButton tweetButton= (ImageButton) findViewById(R.id.tweet_button);

tweetButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                TweetComposer.Builder builder = new TweetComposer.Builder(mContext)
                        .text("just setting up my Fabric.");
                builder.show();

            }
        });

приложение перенаправит вас в приложение Twitter с предустановленным сообщением «просто настраиваю мою ткань». Вы также можете добавлять фотографии и видео!

Надеюсь, что это поможет кому-то в будущем, потому что информации о ткани мало....

person Juan    schedule 25.11.2016