Android 如何获取instagram个人资料图片
在我的应用程序中,你想将instagram个人资料图片放入他的帐户中 如何以编程方式从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 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
///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);
}
}
///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生成访问令牌。我提供的开发者资源链接告诉你如何做到这一点。示例或视频请你通过谷歌搜索找到示例,如果你有关于如何创建访问令牌的其他问题,我建议你问另一个问题,因为这已经超出了你原来的答案的范围。正如我说的,否则他的答案应该可以。我知道你的问题是访问令牌。请查看此链接以了解如何获取它。[现在我获得了访问令牌,但如何获得个人资料照片