Android如何获取公共推文而无需在Fabric中登录用户

时间:2016-02-09 10:57:57

标签: android android-studio twitter-fabric android-twitter

我知道这个问题已被提出。我看过twitter fabric sdk。和它的Auth,但我对它的理解是如此愚蠢。所以下面是我想要的关键点

我想要什么

  1. 我希望所有推文都基于哈希标记,以下是我想要在移动设备上展示的示例Tweets on #Wwe

  2. 我希望我的用户不必登录他/她的Twitter帐户。他只是在我的应用程序中看到推文列表并让他自我更新。

  3. 我已经学过很多教程,但他们没有帮助我,也读了如何从here和其他链接获取推文。

    请告诉我我需要哪个身份证明? 以及如何做所有这些东西。请与twitter登录好的链接?

1 个答案:

答案 0 :(得分:3)

首先,您需要使用Twitter应用程序的密钥和秘密来初始化Fabric:

public void initFabric(Context context){
    if(!Fabric.isInitialized()) {       
          TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
          Fabric.with(context, new Twitter(authConfig));                 
    }else{
          Log.d(TAG, "Fabric already initialized");
    }
}

请记住,保守你的密钥和秘密。

然后您可以通过以下方式按帐户和主题标签检索推文:

public static TweetTimelineListAdapter retrieveTimeLineByHashtag(Context context, String hashtag){
    Log.d(TAG, "Loading tweets with hashtag " + hashtag);
    SearchTimeline searchTimeline = new SearchTimeline.Builder().query(hashtag).build();
    return new TweetTimelineListAdapter.Builder(context).setTimeline(searchTimeline).build();
}

public static TweetTimelineListAdapter retrieveTimeLineByAccount(Context context, String account){
    Log.d(TAG, "Loading tweets from user " + account);
    UserTimeline userTimeline = new UserTimeline.Builder().screenName(account).build();
    return new TweetTimelineListAdapter.Builder(context).setTimeline(userTimeline).build();
}

另请注意,SearchTimeline仅搜索包含搜索字词的最新推文,因此您可以发现不会返回任何推文。但是,我找不到更好的方法来使用Fabric来获取Hashtag的推文。

编辑:

public class Prueba extends AppCompatActivity {

    private static final String TAG = "TWITTER_PRUEBA";
    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_prueba);

        bindUI();
        initFabric(getApplicationContext());
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);

        TweetTimelineListAdapter adapter = retrieveTimeLineByHashtag(this, "#Wwe");
        listView.setAdapter(adapter);
    }

    private void bindUI(){
        listView = (ListView) findViewById(R.id.prueba);
    }

    public static void initFabric(Context context){

        Log.d(TAG, "Initializing Fabric");

        if(!Fabric.isInitialized()) {


                TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
                Fabric.with(context, new Twitter(authConfig));


        }else{
            Log.d(TAG, "Fabric already initialized");
        }
    }

    public static TweetTimelineListAdapter retrieveTimeLineByHashtag(Context context, String hashtag){
        Log.d(TAG, "Loading tweets with hashtag " + hashtag);
        SearchTimeline searchTimeline = new SearchTimeline.Builder().query(hashtag).build();
        return new TweetTimelineListAdapter.Builder(context).setTimeline(searchTimeline).build();
    }

    public static TweetTimelineListAdapter retrieveTimeLineByAccount(Context context, String account){
        Log.d(TAG, "Loading tweets from user " + account);
        UserTimeline userTimeline = new UserTimeline.Builder().screenName(account).build();
        return new TweetTimelineListAdapter.Builder(context).setTimeline(userTimeline).build();
    }
}

结果:

enter image description here