Question poster une image sur Instagram


Question: Dans mon application, je dois publier une image sur Instagram, tout comme FB ou Twitter.

Ce que j'ai déjà fait : Connectez-vous et récupéré des photos de Instagram sur ma propre application. Mais n'obtenez aucun moyen de publier des images sur Instagram.


13
2018-04-30 09:41


origine


Réponses:


Non, vous ne pouvez pas. Cité de Documents API Instagram :

Actuellement, le téléchargement via l'API n'est pas possible. Nous avons délibérément choisi de ne pas ajouter ceci pour les raisons suivantes:

  1. Instagram est votre vie sur la route - nous espérons encourager les photos de l'application. Cependant, à l'avenir, nous pourrons donner accès à une liste blanche à des applications individuelles au cas par cas.
  2. Nous voulons lutter contre le spam et les photos de mauvaise qualité. Une fois que nous autorisons le téléchargement depuis d'autres sources, il est plus difficile de contrôler ce qui entre dans l'écosystème Instagram. Cela dit, nous travaillons sur des moyens de garantir aux utilisateurs une expérience cohérente et de haute qualité sur notre plateforme.

METTRE À JOUR: Cependant, si vous travaillez sur iOS (bien que vous ayez tagué Android), il existe un moyen d'envoyer une photo (en fait, cela ouvre l'image sur Instagram) via le schéma URL personnalisé. Voir ce.


13
2018-04-30 09:46



Pourtant, il n'est pas possible de publier une image sur Instagram comme FB ou Twitter.

Mais ceci est une autre façon de réaliser ceci en utilisant Instagram déjà installé et sinon cela avertira l'utilisateur de télécharger l'application.

 public void onClick(View v) {

        Intent intent = getPackageManager().getLaunchIntentForPackage("com.instagram.android");
        if (intent != null)
        {
            Intent shareIntent = new Intent();
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.setPackage("com.instagram.android");
            try {
                shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), imagePath, "I am Happy", "Share happy !")));
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            shareIntent.setType("image/jpeg");

            startActivity(shareIntent);
        }
        else
        {
            // bring user to the market to download the app.
            // or let them choose an app?
            intent = new Intent(Intent.ACTION_VIEW);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setData(Uri.parse("market://details?id="+"com.instagram.android"));
            startActivity(intent);
        }

    }

34
2018-04-30 12:32



Essayez ce lien:

Vous pouvez utiliser cette classe pour télécharger l'image sur instagram.

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpCookie; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.util.Date; import java.util.List; import java.util.Map; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import javax.net.ssl.HttpsURLConnection; import org.apache.commons.codec.binary.Hex; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; public class InstagramPostHelper { private static InstagramPostHelper instance = null; protected InstagramPostHelper() {} public static InstagramPostHelper getInstance() { if (instance == null) { instance = new InstagramPostHelper(); } return instance; } private String GenerateSignature(String value, String key) { String result = null; try { byte[] keyBytes = key.getBytes(); SecretKeySpec signingKey = new SecretKeySpec(keyBytes, "HmacSHA256"); Mac mac = Mac.getInstance("HmacSHA256"); mac.init(signingKey); byte[] rawHmac = mac.doFinal(value.getBytes()); byte[] hexBytes = new Hex().encode(rawHmac); result = new String(hexBytes, "UTF-8"); } catch (Exception e) { } return result; } private static final String COOKIES_HEADER = "Set-Cookie"; public static java.net.CookieManager msCookieManager = new java.net.CookieManager(); private HttpsURLConnection conn; private static String TextUtilsJoin(CharSequence delimiter, List<HttpCookie> list) { StringBuilder sb = new StringBuilder(); boolean firstTime = true; for (Object token: list) { if (token.toString().trim().length()<1) continue; if (firstTime) { firstTime = false; } else { sb.append(delimiter + " "); } sb.append(token); } return sb.toString(); } private String GetJSONStringAndPostData(String jsonaddress,String postdata,String agent) { String sonuc = ""; try { byte[] postDataBytes = postdata.toString().getBytes("UTF-8"); URL url = new URL(jsonaddress); conn = (HttpsURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length)); conn.setRequestProperty("User-Agent", agent); //Set Cookies if(msCookieManager.getCookieStore().getCookies().size() > 0) { conn.setRequestProperty("Cookie", TextUtilsJoin(";", msCookieManager.getCookieStore().getCookies())); } conn.setDoOutput(true); conn.getOutputStream().write(postDataBytes); if (conn.getResponseCode() != 200) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); } //Get Cookies Map<String, List<String>> headerFields = conn.getHeaderFields(); List<String> cookiesHeader = headerFields.get(COOKIES_HEADER); if(cookiesHeader != null) { for (String cookie : cookiesHeader) { msCookieManager.getCookieStore().add(null,HttpCookie.parse(cookie).get(0)); } } BufferedReader br = new BufferedReader(new InputStreamReader( (conn.getInputStream()))); String output; while ((output = br.readLine()) != null) { sonuc += output; } conn.disconnect(); } catch (MalformedURLException e) { return ""; } catch (IOException e) { return ""; } return sonuc; } public void SendImage(String Caption,byte[] ImageByteArray) throws UnsupportedEncodingException, ParseException { String Agent = "Instagram 6.21.2 Android (19/4.4.2; 480dpi; 1152x1920; Meizu; MX4; mx4; mt6595; en_US)"; String Guid = java.util.UUID.randomUUID().toString(); String DeviceId = "android-" + Guid; String Data = "{\"device_id\":\"" + DeviceId + "\",\"guid\":\"" + Guid + "\",\"username\":\"MYUSERNAME\",\"password\":\"MYPASSWORD\",\"Content-Type\":\"application/x-www-form-urlencoded; charset=UTF-8\"}"; String Sig = GenerateSignature(Data, "25eace5393646842f0d0c3fb2ac7d3cfa15c052436ee86b5406a8433f54d24a5"); Data = "signed_body=" + Sig + "." + URLEncoder.encode(Data, "UTF-8") + "&ig_sig_key_version=4"; if (msCookieManager.getCookieStore()!= null) { msCookieManager.getCookieStore().removeAll(); } //Login Request String login = GetJSONStringAndPostData("https://instagram.com/api/v1/accounts/login/", Data,Agent); JSONParser parser = new JSONParser(); Object obj = parser.parse(login); JSONObject jsonObject = (JSONObject) obj; if (((String) jsonObject.get("status")).equals("ok")) //Login SuccessFul { //Login Successful System.out.println("Login Successful !"); //Post Image String upload = ""; try { final HttpMultipartHelper http = new HttpMultipartHelper(new URL("https://instagram.com/api/v1/media/upload/")); http.addFormField("device_timestamp", Long.toString((new Date()).getTime())); http.addFilePart("photo", ImageByteArray); final byte[] bytes = http.finish(); upload = new String(bytes); } catch (IOException e) { e.printStackTrace(); } System.out.println(upload); obj = parser.parse(upload); jsonObject = (JSONObject) obj; if (((String) jsonObject.get("status")).equals("ok")) //Login SuccessFul { String mediaID = (String) jsonObject.get("media_id"); Data = "{\"device_id\":\"" + DeviceId + "\",\"guid\":\"" + Guid + "\",\"media_id\":\"" + mediaID + "\",\"caption\":\"" + Caption + "\",\"device_timestamp\":\"" + Long.toString((new Date()).getTime()).substring(0,10) + "\",\"source_type\":\"5\",\"filter_type\":\"0\",\"extra\":\"{}\",\"Content-Type\":\"application/x-www-form-urlencoded; charset=UTF-8\"}"; Sig = GenerateSignature(Data, "25eace5393646842f0d0c3fb2ac7d3cfa15c052436ee86b5406a8433f54d24a5"); Data = "signed_body=" + Sig + "." + URLEncoder.encode(Data, "UTF-8") + "&ig_sig_key_version=6"; //Login Request System.out.println(Data); String result = GetJSONStringAndPostData("https://instagram.com/api/v1/media/configure/", Data,Agent); System.out.println(result); } } else //Login UnsuccessFul { System.out.println("Login Unsuccessful !" + login); } } }

0
2017-08-22 08:47