【发布时间】:2015-02-16 12:27:47
【问题描述】:
我一直在尝试实现 Fabric 以获取用户的 5 条最新推文列表。它工作了几个小时,然后停止工作。我想在没有用户登录的情况下执行此操作,据我所知,API 允许访客登录来阅读推文,但这可能对速率限制有更大的影响?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new Twitter(authConfig), new Crashlytics());
TwitterCore.getInstance().logInGuest(new Callback() {
@Override
public void success(Result result) {
AppSession session = (AppSession) result.data;
getTweets();
}
@Override
public void failure(TwitterException exception) {
// unable to get an AppSession with guest auth
}
});
}
public void getTweets() {
TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient();
StatusesService statusesService = twitterApiClient.getStatusesService();
statusesService.userTimeline([USERID], null, 5, null, null, null, true, null, false, new Callback<List<Tweet>>() {
@Override
public void success(Result <List<Tweet>> result) {
for(Tweet Tweet : result.data) {
tweetList.add(Tweet.text);
}
createListView();
}
public void failure(TwitterException exception) {
Log.e("Failure", exception.toString());
exception.printStackTrace();
}
});
}
当我没有得到 403 时,一切正常,我的列表就会被填充。
现在,完全有可能是我的代码有问题将我的速率限制列入黑名单?除此以外;我是否需要让用户登录才能向他们展示 5 条推文?还是我应该实现某种服务器端缓存?
感谢任何提示/帮助。
【问题讨论】:
-
我遇到了同样的问题。它在一天中的大部分时间都运行良好,然后就在不久前它停止工作,返回“403”。我的代码没有任何变化,我无法想象我已经达到了任何速率限制(如果是这样,那么 Fabric 就没有用处了)
-
奇怪。我已经联系了 Twitter(我猜是 Fabric 团队),看看我是否在方面达到了某种限制。我对Android很陌生,所以我可能会犯一些菜鸟错误。但是,如果您遇到同样的问题,可能会有问题。
-
嗯.. 似乎清除应用程序缓存和数据修复了它。我不确定发生了什么事。我在我的代码中添加了 TwitterCore.getInstance().logoff() 以查看它是否与它有关。也许它正在使用缓存的授权令牌或其他东西,也许调用 logoff() 会清除它。不过,这是我目前最好的猜测。可能只是巧合,它几乎同时发生在我们身上。
-
这对我不起作用。确实有效的是使用我的 Twitter 帐户进行身份验证,即登录。之后,没有问题。尽管这可能不是您想要的用户体验。
-
是的,对我也不起作用。我今天早上醒来,它不再拉推文(清除应用程序数据确实使它工作,但这不是一个合理的解决方案)。不幸的是,使用 Twitter 帐户登录不适合我的目的(我只想在应用程序中嵌入公司的推文,而用户不应该为此进行身份验证)。我今天会更多地玩弄它。
标签: android twitter twitter-fabric