无法通过 Twitter 获取 Twitter 用户的关注者数量 API
Can't get twitter user's follower count via Twitter API
我很难获得 Twitter 用户的关注者数量。
我确实关注了 twitter rest api 文档,但找不到我的问题的答案。我通过他们的休息 API 成功拨打了电话,我收到了 "Success" 回电,但我不知道要将我的回复解析成什么。他们的文档一直在说 "it returns a "collection of ids”。所以我假设我可以将响应解析为一个 ids 列表(List),但这会导致 gson 解析错误。我可以成功地将它解析为一个 JSONOBject,但最终是空的。
相关代码如下:
package com.boomer.omer.kollabstr.backend.twitteroauth;
进口com.twitter.sdk.android.core.models.User;
import org.json.JSONObject;
import java.util.List;
import retrofit.Callback;
import retrofit.http.GET;
import retrofit.http.Query;
public interface TwitterGetFollowerCountApiClient {
@GET("/1.1/followers/ids.json")
void getFollowerCount(@Query("user_id")Long id,
@Query("screen_name")String screenname,
@Query("cursor")Long cursor,
@Query("stringify_ids")Boolean sids,
@Query("count")Long count,
Callback<JSONObject> users);
}
然后我send/handle请求来自:
private void createSocialMediaObject(final TwitterSession twitterSession){
getKollabstrTwitterApiClient().getFollowerCountService().
getFollowerCount(twitterSession.getUserId(),
null,
null,
null,
null,
new Callback<JSONObject>() {
@Override
public void success(Result<JSONObject> result) {
SocialMedia twitter = new SocialMedia();
twitter.setUsername(twitterSession.getUserName());
twitter.setUserid(Long.toString(twitterSession.getUserId()));
twitter.setSocialMediaType(SocialMediaType.TWITTER);
//twitter.setImpact(result.data.size());
// Log.d(TAG,"FOLLOWERS:" + Integer.toString(result.data.size()));
Users user = SessionManager.getInstance().getCurrentUser();
user.getProfile().getSocialMediaAccounts().add(twitter);
SessionManager.getInstance().updateUser(user);
Log.d("FOLLOWER",Integer.toString(result.data.length()));
}
@Override
public void failure(TwitterException exception) {
Log.d(TAG,"FOLLOWER ERROR:" + exception.toString());
}
});
}
我在这里遵循了他们的文档:https://dev.twitter.com/rest/reference/get/followers/ids
我想获得一个 id 列表,这样我就可以得到它的大小,这应该是根据他们的页面的关注者数量。但是即使我可以获得成功的回调(我假设这表明查询成功完成)我也无法弄清楚响应应该被解析成什么。
感谢任何帮助。请不要简单地将我介绍给其他图书馆来完成这项工作。
试试这个我在我的一些项目中使用的代码来使 Twitter 集成工作:
Twitter4j 设置
下载 twitter4j 库(jar 文件),将以下内容添加到您的 libs 文件夹中,然后从 libs 文件夹中右键单击它们以 Add as Library。这意味着您的 build.gradle 文件将如下所示:
dependencies{
...
compile files('libs/twitter4j-async-4.0.4.jar')
compile files('libs/twitter4j-core-4.0.4.jar')
}
现在,您可以使用此库连接 Twitter。
假设:您已经在 Twitter 上的开发者帐户上创建了一个 Twitter 应用程序。
接下来,无论您希望如何执行请求(AsyncTask、Service 等):
//this sample code searches for twitter accounts
//rest of your code here
@Override
protected ResponseList<User> doInBackground(String... params) {
String location = "kansas city";
try {
//mTwitter is your Twitter instance!
return mTwitter.searchUsers(location, 20);
}catch (TwitterException e){
e.getMessage();
}
return null;
}
@Override
protected void onPostExecute(ResponseList<User> response){
if (response != null){
progress.dismiss();
if (response.size() == 0 ){
//you got no results back; zero
}else{
//you can loop through the response list
User u = response.get(0);
Log.i("USERCOUNT", "THE COUNT: " + u.getFollowersCount());
}
}
}
因此,您可以使用此库快速获得结果;
希望这对您有所帮助,如果您需要进一步的帮助,请告诉我!
我找到了答案。我只需要从 Retrofit 将响应解析为 Response class。然后将其转换为 JSON 对象。
public JSONObject responseToJSON(Response response){
BufferedReader reader = null;
StringBuilder sb = new StringBuilder();
JSONObject jsonObject = null;
try {
reader = new BufferedReader(new InputStreamReader(response.getBody().in()));
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
String result = sb.toString();
try {jsonObject=new JSONObject(result);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject;
}
我很难获得 Twitter 用户的关注者数量。
我确实关注了 twitter rest api 文档,但找不到我的问题的答案。我通过他们的休息 API 成功拨打了电话,我收到了 "Success" 回电,但我不知道要将我的回复解析成什么。他们的文档一直在说 "it returns a "collection of ids”。所以我假设我可以将响应解析为一个 ids 列表(List),但这会导致 gson 解析错误。我可以成功地将它解析为一个 JSONOBject,但最终是空的。
相关代码如下:
package com.boomer.omer.kollabstr.backend.twitteroauth;
进口com.twitter.sdk.android.core.models.User;
import org.json.JSONObject;
import java.util.List;
import retrofit.Callback;
import retrofit.http.GET;
import retrofit.http.Query;
public interface TwitterGetFollowerCountApiClient {
@GET("/1.1/followers/ids.json")
void getFollowerCount(@Query("user_id")Long id,
@Query("screen_name")String screenname,
@Query("cursor")Long cursor,
@Query("stringify_ids")Boolean sids,
@Query("count")Long count,
Callback<JSONObject> users);
}
然后我send/handle请求来自:
private void createSocialMediaObject(final TwitterSession twitterSession){
getKollabstrTwitterApiClient().getFollowerCountService().
getFollowerCount(twitterSession.getUserId(),
null,
null,
null,
null,
new Callback<JSONObject>() {
@Override
public void success(Result<JSONObject> result) {
SocialMedia twitter = new SocialMedia();
twitter.setUsername(twitterSession.getUserName());
twitter.setUserid(Long.toString(twitterSession.getUserId()));
twitter.setSocialMediaType(SocialMediaType.TWITTER);
//twitter.setImpact(result.data.size());
// Log.d(TAG,"FOLLOWERS:" + Integer.toString(result.data.size()));
Users user = SessionManager.getInstance().getCurrentUser();
user.getProfile().getSocialMediaAccounts().add(twitter);
SessionManager.getInstance().updateUser(user);
Log.d("FOLLOWER",Integer.toString(result.data.length()));
}
@Override
public void failure(TwitterException exception) {
Log.d(TAG,"FOLLOWER ERROR:" + exception.toString());
}
});
}
我在这里遵循了他们的文档:https://dev.twitter.com/rest/reference/get/followers/ids
我想获得一个 id 列表,这样我就可以得到它的大小,这应该是根据他们的页面的关注者数量。但是即使我可以获得成功的回调(我假设这表明查询成功完成)我也无法弄清楚响应应该被解析成什么。
感谢任何帮助。请不要简单地将我介绍给其他图书馆来完成这项工作。
试试这个我在我的一些项目中使用的代码来使 Twitter 集成工作:
Twitter4j 设置
下载 twitter4j 库(jar 文件),将以下内容添加到您的 libs 文件夹中,然后从 libs 文件夹中右键单击它们以 Add as Library。这意味着您的 build.gradle 文件将如下所示:
dependencies{
...
compile files('libs/twitter4j-async-4.0.4.jar')
compile files('libs/twitter4j-core-4.0.4.jar')
}
现在,您可以使用此库连接 Twitter。
假设:您已经在 Twitter 上的开发者帐户上创建了一个 Twitter 应用程序。
接下来,无论您希望如何执行请求(AsyncTask、Service 等):
//this sample code searches for twitter accounts
//rest of your code here
@Override
protected ResponseList<User> doInBackground(String... params) {
String location = "kansas city";
try {
//mTwitter is your Twitter instance!
return mTwitter.searchUsers(location, 20);
}catch (TwitterException e){
e.getMessage();
}
return null;
}
@Override
protected void onPostExecute(ResponseList<User> response){
if (response != null){
progress.dismiss();
if (response.size() == 0 ){
//you got no results back; zero
}else{
//you can loop through the response list
User u = response.get(0);
Log.i("USERCOUNT", "THE COUNT: " + u.getFollowersCount());
}
}
}
因此,您可以使用此库快速获得结果;
希望这对您有所帮助,如果您需要进一步的帮助,请告诉我!
我找到了答案。我只需要从 Retrofit 将响应解析为 Response class。然后将其转换为 JSON 对象。
public JSONObject responseToJSON(Response response){
BufferedReader reader = null;
StringBuilder sb = new StringBuilder();
JSONObject jsonObject = null;
try {
reader = new BufferedReader(new InputStreamReader(response.getBody().in()));
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
String result = sb.toString();
try {jsonObject=new JSONObject(result);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject;
}