如何获取Instagram个人资料图片

问题描述 投票:0回答:4

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

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

如:

android android-studio image-processing instagram instagram-api
4个回答
4
投票

使用 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 之类的工具下载它,然后它将为您显示图像。


1
投票

好吧,如果您确实希望用户从您的应用程序中POST instagram 个人资料图片,您不能,instagram 尚未提供用于发布照片的 post 方法,但是您可以查看和下载根据哈士奇的回答。


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. 使用

    ImageView
    将图像加载到
    Glide
    中。

快乐编码!

感谢 Chrisby 的服务器。 https://stackoverflow.com/a/49862390/9565955


0
投票

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

第1步:MainActivity.java

  1. 将此代码添加到您的主要活动中。创建一个名为 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;
         }
    
  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 内容应如下所示:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:app="http://schemas.android.com/apk/res-auto"
         xmlns:tools="http://schemas.android.com/tools"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         tools:context=".MainActivity">
    
     <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步:下载ImageTask.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

现在最后一步是添加主活动,即加载 ImageView 的代码。此代码将位于您的 MainActivity.java 文件中的 OnCreate void 中:

ImageView = thumbnails = (ImageView)findItemById(R.id.imgProfilePic);
new DownloadImageTask(thumbnails).execute(getHDProfilePicFromUsername("jusnjshb"));
© www.soinside.com 2019 - 2024. All rights reserved.