首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用instagram API从配置文件用户URL加载instagram配置文件图片?

如何使用instagram API从配置文件用户URL加载instagram配置文件图片?
EN

Stack Overflow用户
提问于 2017-08-05 02:44:00
回答 1查看 401关注 0票数 0

我尝试显示来自url的图片,到目前为止,我已经成功了,但当我试图从用户的url加载instagram个人资料图片时,它不起作用。我想知道如何使用instagram API获取用户的图像,并使用毕加索将其加载到图像视图中。

EN

回答 1

Stack Overflow用户

发布于 2020-04-16 02:11:27

实际上,我使用的方法不需要访问令牌,您唯一需要的就是用户名。我会把下面的代码留给你

第1步: MainActivity.java

  1. 将以下代码添加到您的主活动中,创建一个名为getHDProfilePicFromUsername的字符串函数和另一个名为getBetweenStrings的函数,这些函数应如下所示:

第一个getHDProfilePicFromUrl

代码语言:javascript
运行
复制
    ///This function will return to you the url of the user profile picture
    private String getHDProfilePicFromUrl(String url) throws ExecutionException, InterruptedException, JSONException {

        JSONObject jObject;
        String parsingUsername,username;
            if(url.contains("?"))
            {
                parsingUsername = url.substring(0,url.lastIndexOf("?"))+"/";
            }
            else{
                parsingUsername = url;
            }
            username = getBetweenStrings(parsingUsername,".com/","/");
        String profileInfo = new getDataFromUrl(this).execute("https://www.instagram.com/"+username+"/?__a=1").get();

        jObject= new JSONObject(profileInfo);
        jObject  = jObject.getJSONObject("graphql");
        jObject  = jObject.getJSONObject("user");
        String response  = jObject.getString("profile_pic_url_hd");
        return response;     }

第二个getBetweenStrings

代码语言:javascript
运行
复制
private String getBetweenStrings( String text, String textFrom, String textTo) {
String result = "";
result = text.substring( text.indexOf(textFrom) + textFrom.length(), text.length());
result =  result.substring(0,result.indexOf(textTo));
return result;
}

  1. 然后在您的活动中创建一个名为getDataFromUrl的内部类,该类应如下所示:

私有类getDataFromUrl扩展AsyncTask { Context mContext;public getDataFromUrl(Context mContext) { this.mContext = mContext;} @Override protected void onPreExecute() { super.onPreExecute();} @Override protected String doInBackground(String...arg0) { HttpHandler sh =新的HttpHandler();//请求url并获取响应字符串jsonStr = sh.makeServiceCall(arg0);log.e(标签,“来自url的响应:”+ jsonStr);if (jsonStr != null) { return jsonStr;} else {log.e(标签,“无法从服务器获取json.”);return null;}} @Override protected void onPostExecute(String s) { super.onPostExecute(s);String url = s.replace('|',',').split(",")1;Log.d(TAG,“链接:”+ url);} }

现在你可以获得一个用户个人资料图片网址,作为奖励,我将让你使用该网址的代码,并将图片放入ImageView。

第2步: main_activity.xml

  1. 添加一个图像视图,ImageView,可以自定义,但我建议使用1:1的比例来保持图像质量。你的xml应该是这样的:

第3步: DownloadImageTask.java

现在,您需要创建一个名为DownloadImageTask的外部类,完整代码必须如下所示:

代码语言:javascript
运行
复制
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ImageView;

import java.io.InputStream;

public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;

    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mIcon11 = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }

    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }
}

第4步: MainActivity.java

现在,最后一步是添加您的主要活动加载ImageView的代码片段,此代码将位于您的MainActivity.java内的OnCreate中

代码语言:javascript
运行
复制
String url="https://www.instagram.com/juanjshb/";
ImageView = thumbnails = (ImageView)findItemById(R.id.imgProfilePic);
new DownloadImageTask(thumbnails).execute(getHDProfilePicFromUrl(url));

这就是全部,希望它能帮助我使用这个代码2年,希望它能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45513592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档