使用Parse twitter登录android获取来自twitter的个人资料图片图片

时间:2014-10-07 20:19:37

标签: android image twitter

我对android很新。

我使用Parse作为Baas进行Twitter身份验证,据我所知,我只能得到一个com.parse.twitter.Twitter对象而不是twitter4j.Twitter对象。

我尝试使用此代码在Android应用中从twitter下载并显示个人资料图片图片:

String twitterURL = "https://api.twitter.com/1.1/users/profile_banner.json?screen_name=myScreenName";  

//根据此处的文档https://dev.twitter.com/rest/reference/get/users/profile_banner

然后我想用毕加索                                     。Picasso.with(aView.getContext())负载(twitterURL).resize(100150).centerCrop()代入(ImageView的);

但没有显示任何内容......

我也尝试过该代码:

URL url = new URL(twitterURL);
InputStream is = (InputStream) url.getContent();
Drawable d = Drawable.createFromStream(is, "src name");

但是收到错误FileNotFoundException。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

我自己遇到了这个问题而且从来没有找到一个好的答案,所以你的代码帮助我搞清楚了!

您正在获取的InputStream实际上是JSON格式(例如{" id":4646546," name":" ian"," profile_image_url& #34;:" http://pbs.twimg.com/profile_images/1138330557/ian-straw_normal.jpg"})。所以你不能从中创建一个drawable。 Twitter API文档提供了一个示例结果:https://dev.twitter.com/rest/reference/get/users/show

你可以摆脱' _normal'如果你想以原始尺寸获取图像。

使用此profile_image_url,您可以获取您感兴趣的图像。您可以使用Android Query或Picasso来执行此操作。只要您不在主UI线程上执行此操作,您也可以执行另一个HttpRequest。

您的代码变为(我忽略了try / catch块以提高可读性):

HttpClient client = new DefaultHttpClient();
HttpGet verifyGet = new HttpGet(
    "https://api.twitter.com/1.1/users/show.json?screen_name=" + handle);
ParseTwitterUtils.getTwitter().signRequest(verifyGet);
HttpResponse response = client.execute(verifyGet);
InputStream is = response.getEntity.getContent();
JSONObject responseJson = new JSONObject(IOUtils.toString(is));
url = responseJson.getString("profile_image_url");

final AQuery androidQuery = new AQuery(this);
//fetch and set the image from internet, cache with file and memory 
androidQuery.id(R.id.image1).image(url);

注意:AQuery为您提供了更多选择。如果需要,您可以直接在位图中获取图像。请参阅:https://code.google.com/p/android-query/wiki/AsyncAPI#Bitmap

答案 1 :(得分:0)

我自己没有对此进行测试,但我认为它应该指向正确的方向。

Twitter API现在要求您对每个API请求进行身份验证。

HttpClient client = new DefaultHttpClient();
HttpGet verifyGet = new HttpGet(
    "https://api.twitter.com/1.1/users/profile_banner.json?screen_name=myScreenName");
ParseTwitterUtils.getTwitter().signRequest(verifyGet);
HttpResponse response = client.execute(verifyGet);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();

所以我认为你有两个问题:

  1. 您似乎没有发出任何HTTP请求,而只是创建了网址。
  2. 您没有签署Twitter请求
  3. https://parse.com/docs/android_guide#twitterusers-requests