使用android解析twitter登录从twitter获取个人资料图片图像

使用android解析twitter登录从twitter获取个人资料图片图像,android,image,twitter,Android,Image,Twitter,我对安卓系统还很陌生 我使用Parse as 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";

我对安卓系统还很陌生

我使用Parse as 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";  
//根据这里的文件

然后我想用毕加索 Picasso.with(aView.getContext()).load(twitterURL).resize(100150).centerCrop().into(imageView)

但是什么也没有显示

我也尝试过使用该代码:

URL url = new URL(twitterURL);
InputStream is = (InputStream) url.getContent();
Drawable d = Drawable.createFromStream(is, "src name");
但获取错误FileNotFoundException


非常感谢您的帮助。

我自己还没有测试过,但我相信它会为您指明正确的方向

twitterapi现在要求对每个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();
所以我认为你有两个问题:

  • 您似乎没有发出任何HTTP请求,只是创建了URL
  • 你没有签署Twitter请求

  • 我自己也有这个问题,从来没有找到一个好的答案,所以你的代码帮助我解决了这个问题

    您正在获取的输入流实际上是JSON格式的(例如{“id”:4646546,“name”:“ian”,“profile\u image\u url”:“”)。所以你不能仅仅从它创建一个可绘制的。Twitter API文档给出了一个示例结果:

    如果您想获取原始大小的图像,可以去掉“_normal”

    使用此配置文件\图像\ url,您可以获取感兴趣的图像。您可以使用Android Query或毕加索来完成此操作。您还可以执行另一个HttpRequest,只要不在主UI线程上执行

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


    注意:AQuery为您提供了更多选项。如果需要,可以直接在位图中获取图像。请参阅:

    您从API调用中得到了什么?据我所知,您需要通过Twitter验证所有API调用,但您似乎没有这样做。谢谢您的回答。我在我的登录页面上使用twitter帐户进行身份验证。此时,我将用户的屏幕名保存在Parse数据库中,以便稍后使用上述代码获取他的个人资料图片。当我使用InputStream代码时,我得到一个FileNotFoundException。对于毕加索,不会引发异常。也许,我在firts屏幕上进行身份验证还不够?谢谢你的帮助。我已经测试了你的解决方案。这似乎是一个非常有趣的方向(链接似乎也这么说),但仍然没有显示图像。InpuStream不是空的,但是我不能说里面有一个pciture。因此,我尝试将InputStream转换为如下可绘制文件:drawable d=drawable.createFromStream(是“src name”);imageView.setImageDrawable(d);但是对象d仍然为空..没有人有相同的问题吗?它可以工作!!你真是个天才!!多谢你,伊恩。我只需要使用这段代码并添加ApacheCommons来使用IOUtils。
    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);