Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取instagram个人资料图片_Android_Android Studio_Image Processing_Instagram_Instagram Api - Fatal编程技术网

Android 如何获取instagram个人资料图片

Android 如何获取instagram个人资料图片,android,android-studio,image-processing,instagram,instagram-api,Android,Android Studio,Image Processing,Instagram,Instagram Api,在我的应用程序中,你想将instagram个人资料图片放入他的帐户中 如何以编程方式从Instagram获取用户的个人资料图片 例如: 使用Instagram API用户端点(https://api.instagram.com/v1/users/{user id}/?access\u token=access-token )您将收到如下响应: { "data": { "id": "1574083", "username": "snoopdogg",

在我的应用程序中,你想将instagram个人资料图片放入他的帐户中

如何以编程方式从Instagram获取用户的个人资料图片

例如:


使用Instagram API用户端点(
https://api.instagram.com/v1/users/{user id}/?access\u token=access-token
)您将收到如下响应:

{
    "data": {
        "id": "1574083",
        "username": "snoopdogg",
        "full_name": "Snoop Dogg",
        "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg",
        "bio": "This is my bio",
        "website": "http://snoopdogg.com",
        "counts": {
            "media": 1320,
            "follows": 420,
            "followed_by": 3410
        }
}
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);
    }
}

然后,您可以拍摄
个人资料\u图片
并使用类似的工具下载,然后为您显示图片。

如果您确实想让用户从您的应用程序中发布一张instagram个人资料图片,您不能,instagram尚未提供发布照片的方法,但您可以根据husky的回答查看和下载照片。

按照以下步骤在应用程序中获取个人资料图片

  • 使用用户名请求下面的链接并接收
    JSON
    数据。
    https://apinsta.herokuapp.com/u/USERNAME

  • 现在从数据中解析用户的
    id

  • 现在使用
    ID
    https://i.instagram.com/api/v1/users/ID_HERE/info/

  • 现在解析
    url
    输入
    hd\u profile\u pic\u url\u info
    对象

  • 使用
    Glide
    ImageView
    中加载图像

  • 快乐编码

    克里斯比的服务器值得称赞。

    实际上,我使用的方法不需要访问令牌,您只需要用户名。我会把密码留给你的

    步骤1:MainActivity.java

  • 将此代码添加到主活动中,创建一个名为getHDProfilePicFromUsername的字符串函数该函数应如下所示:

    ///This function will return to you the url of the user profile picture
     private String getHDProfilePicFromUsername(String username) throws ExecutionException, InterruptedException, JSONException {
         JSONObject jObject;
         String profileInfo = new getDataFromUrl(MainActivity.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;
        }   
    
    private class getDataFromUrl extends AsyncTask<String, Void, String> {
        Context mContext;
        public getDataFromUrl(Context mContext) {
            this.mContext = mContext;
        }
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
    
        }
    
        @Override
        protected String doInBackground(String... arg0) {
            HttpHandler sh = new HttpHandler();
    
            // Making a request to url and getting response
            String jsonStr = sh.makeServiceCall(arg0[0]);
    
            Log.e(TAG, "Response from url: " + jsonStr);
    
            if (jsonStr != null) {
                return jsonStr;
            } else {
                Log.e(TAG, "Couldn't get json from server.");
                return null;
            }
        }
    
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            String url = s.replace('|',',').split(",")[1];
            Log.d(TAG, "Link: " + url);
        }
    }
    
  • 然后在活动内创建一个名为getDataFromUrl的内部类,该类应如下所示:

    ///This function will return to you the url of the user profile picture
     private String getHDProfilePicFromUsername(String username) throws ExecutionException, InterruptedException, JSONException {
         JSONObject jObject;
         String profileInfo = new getDataFromUrl(MainActivity.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;
        }   
    
    private class getDataFromUrl extends AsyncTask<String, Void, String> {
        Context mContext;
        public getDataFromUrl(Context mContext) {
            this.mContext = mContext;
        }
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
    
        }
    
        @Override
        protected String doInBackground(String... arg0) {
            HttpHandler sh = new HttpHandler();
    
            // Making a request to url and getting response
            String jsonStr = sh.makeServiceCall(arg0[0]);
    
            Log.e(TAG, "Response from url: " + jsonStr);
    
            if (jsonStr != null) {
                return jsonStr;
            } else {
                Log.e(TAG, "Couldn't get json from server.");
                return null;
            }
        }
    
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            String url = s.replace('|',',').split(",")[1];
            Log.d(TAG, "Link: " + url);
        }
    }
    

    仅此而已,希望它有帮助我有2年的时间使用此代码希望它有帮助。

    访问令牌将是通过Instagram API发布的令牌。有很多关于它们是什么的资源,你可以找到有关Instagram如何从他们的网站授予令牌的信息。我已经在Instagram开发者网站上注册并获取客户端ID非访问令牌。你可以使用客户端ID生成访问令牌。我提供的开发者资源链接告诉你如何做到这一点。示例或视频请你通过谷歌搜索找到示例,如果你有关于如何创建访问令牌的其他问题,我建议你问另一个问题,因为这已经超出了你原来的答案的范围。正如我说的,否则他的答案应该可以。我知道你的问题是访问令牌。请查看此链接以了解如何获取它。[现在我获得了访问令牌,但如何获得个人资料照片