如何获取 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.