我正在开发一个带有 Twitter 集成的 Android 应用程序。我想从 twitter 获取 user_mention
的推文。我在 twitter dev http://docs.fabric.io/android/twitter/show-timelines.html 上看到了这个文档。
这是部分代码:-
public class TimelineActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timeline);
TwitterAuthConfig authConfig = new TwitterAuthConfig("xxxxxxbbbbwdqddq", "eieuhquifhioqhfiohqoifhoi");
Fabric.with((this), new TwitterCore(authConfig), new TweetUi());
UserTimeline userTimeline = new UserTimeline.Builder().screenName("fabric").build();
使用这种方法,我可以根据屏幕名称
获取时间线。但我想要所有提到特定用户(前@user
)的推文而不是时间线。我已经用 fabric 尝试过,但我也可以尝试 twitter4j 。因此,如果您知道如何执行此操作(使用 fabric
或 twitter 4j
),它将很有帮助。提前致谢。
最佳答案
对于您的要求,Twitter 搜索 API 是最好的解决方案。对于 Twitter Fabric,您可以使用 SearchService。您可以从Fabric的twitter客户端获取SearchService。如下:
Fabric.with(this, new Twitter(authConfig));
TwitterSession currentSession = Twitter.getSessionManager().getActiveSession();
TwitterApiClient twitterApiClient = new TwitterApiClient(currentSession);
SearchService searchService = twitterApiClient.getSearchService();
//Other services in Fabric Twitter
AccountService accountService =twitterApiClient.getAccountService();
StatusesService statusesService = twitterApiClient.getStatusesService();
FavoriteService favoriteService = twitterApiClient.getFavoriteService();
以下是搜索服务的请求模板:
public interface SearchService {
@GET("/1.1/search/tweets.json")
void tweets(@Query("q") String var1, @EncodedQuery("geocode") Geocode var2, @Query("lang") String var3, @Query("locale") String var4, @Query("result_type") String var5, @Query("count") Integer var6, @Query("until") String var7, @Query("since_id") Long var8, @Query("max_id") Long var9, @Query("include_entities") Boolean var10, Callback<Search> var11);
}
您必须在此处输入您的查询来代替“q”。输入所需的查询,您将得到结果。您可以在 Twitter 的开发者控制台中尝试查询 Twitter Developer Console .
使用它的示例代码:
searchService.tweets("@ladygaga", null, null, null, SEARCH_RESULT_TYPE, SEARCH_COUNT, null, null,
maxId, true, new Callback<Search>() {
@Override
public void success(Result<Search> searchResult) {
final List<Tweet> tweets = searchResult.data.tweets;
// Use tweets as you like
}
@Override
public void failure(TwitterException error) {
}
}
);
例如,要搜索所有提及 ladygaga 的推文,您的查询将为 https://twitter.com/search?q=%40ladygaga&src=typd 。这里 q 是“%40ladygaga”。您也可以使用您的 Twitter 帐户尝试一下。检查地址栏中的 url。它给出了应该查询什么的提示。
有关如何构建查询的更多信息,您可以查看 How to Build Twitter Search Queries 希望对您有所帮助。
关于java - 在 Android 中从 twitter 获取 user_mention (@user) 的推文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31604903/