如何获得Instagram个人资料图片

时间:2017-01-05 21:18:33

标签: android android-studio image-processing instagram instagram-api

在我的应用程序中使用想要将Instagram个人资料照片放入他的帐户

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

如:

4 个答案:

答案 0 :(得分:3)

使用Instagram API用户端点(https://api.instagram.com/v1/users/{user-id}/?access_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
        }
}

然后,您可以使用profile_picture并使用Facebook Fresco之类的内容下载app.controller('Rollup', rollUpCtrl); rollUpCtrl.$inject = ['$scope', '$rootScope', '$http', '$uibModal','headersvc','locFiltersvc'] function rollUpCtrl($scope, $rootScope, $http, $uibModal, headersvc, locFiltersvc) {...} ,然后会为您显示图片。

答案 1 :(得分:1)

如果您确实希望用户发布来自您应用的 instagram 个人资料图片,那么 instagram 尚未提供 post method 用于发布照片,但是您可以根据赫斯基的回答查看和下载。

答案 2 :(得分:0)

按照以下步骤在您的应用中获取个人资料照片

  1. 请求以下链接用户名并接收JSON数据。 https://apinsta.herokuapp.com/u/USERNAME

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

  3. 现在使用ID访问此链接 https://i.instagram.com/api/v1/users/ID_HERE/info/

  4. 现在在url对象中解析hd_profile_pic_url_info键。

  5. 使用ImageViewGlide加载图片。

  6. 快乐的编码!

    感谢克里斯比的服务器。    https://stackoverflow.com/a/49862390/9565955

答案 3 :(得分:0)

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

步骤1:MainActivity.java

  1. 将此代码添加到您的主要活动中,创建一个名为getHDProfilePicFromUsername的String函数,功能应如下所示:

    ///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;
        }   
    
  2. 然后在您的Activity中创建一个名为getDataFromUrl的内部类,该类应如下所示:

    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);
        }
    }
    

现在,您可以获取用户个人资料图片的URL,此外,我将为您提供使用该URL的代码,并将图片导入ImageView。

第2步:main_activity.xml

  1. 添加图像视图ImageView可以自定义,但我建议使用1:1比例以保持图像质量。您的xml应该如下所示:

    <ImageView
        android:id="@+id/imgProfilePic"
        android:scaleType="fitXY"
        android:src="@drawable/ic_image_black_24dp"
        android:layout_width="300dp"
        android:layout_height="300dp"/>
    
    </RelativeLayout>
    

第3步:DownloadImageTask.java

现在,您需要创建一个名为DownloadImageTask的外部类,完整的代码必须像这样:

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

现在,最后一步将是向您的Main Activity添加一段代码以加载ImageView,该代码将位于MainActivity.java中的OnCreate空隙中

ImageView = thumbnails = (ImageView)findItemById(R.id.imgProfilePic);
new DownloadImageTask(thumbnails).execute(getHDProfilePicFromUsername("jusnjshb"));

仅此而已,希望对我有帮助2年,希望使用此代码对我有帮助。