사용자가 업로드 한 사진을 인스 타 그램에 직접 게시해야하는 PHP 애플리케이션을 구축 중이지만 빠른 검색 후 API에 이러한 기능이 없음을 발견했습니다. (그리고 이상하게 느껴집니다 … 그들이 제공해야하기 때문입니다. PHP를 사용하여 사진을 업로드하는 다른 방법 (Android 및 iOS 용 앱 제외)이 있는지 확실하지 않습니다. 가능성이 있으면 어떤 종류의 아이디어라도주세요.
나는 또한 이것을 읽었다,
답변
공유 한 링크를 읽으면 허용되는 답변은 다음과 같습니다.
API를 통해 Instagram에 사진을 게시 할 수 없습니다.
그래도 PC에서 인스 타 그램을 모방 할 수있는 것 같습니다.
BlueStacks 는 PC / Mac 등에서 Android 앱을 실행할 수있는 에뮬레이터입니다.
그래도 얼마나 잘 작동하는지 잘 모르겠습니다.
답변
최신 정보:
Instagram은 이제이 방법에 따라 계정을 금지하고 이미지를 제거합니다. 주의해서 사용하십시오.
이 질문에 답한 모든 사람들 it can't be done
이 다소 옳은 것 같습니다. 공식적으로는 API로 Instagram에 사진을 게시 할 수 없습니다. 그러나 API를 리버스 엔지니어링하면 가능합니다.
function SendRequest($url, $post, $post_data, $user_agent, $cookies) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://i.instagram.com/api/v1/'.$url);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($post) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
if($cookies) {
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
} else {
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
}
$response = curl_exec($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return array($http, $response);
}
function GenerateGuid() {
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand(0, 65535),
mt_rand(0, 65535),
mt_rand(0, 65535),
mt_rand(16384, 20479),
mt_rand(32768, 49151),
mt_rand(0, 65535),
mt_rand(0, 65535),
mt_rand(0, 65535));
}
function GenerateUserAgent() {
$resolutions = array('720x1280', '320x480', '480x800', '1024x768', '1280x720', '768x1024', '480x320');
$versions = array('GT-N7000', 'SM-N9000', 'GT-I9220', 'GT-I9100');
$dpis = array('120', '160', '320', '240');
$ver = $versions[array_rand($versions)];
$dpi = $dpis[array_rand($dpis)];
$res = $resolutions[array_rand($resolutions)];
return 'Instagram 4.'.mt_rand(1,2).'.'.mt_rand(0,2).' Android ('.mt_rand(10,11).'/'.mt_rand(1,3).'.'.mt_rand(3,5).'.'.mt_rand(0,5).'; '.$dpi.'; '.$res.'; samsung; '.$ver.'; '.$ver.'; smdkc210; en_US)';
}
function GenerateSignature($data) {
return hash_hmac('sha256', $data, 'b4a23f5e39b5929e0666ac5de94c89d1618a2916');
}
function GetPostData($filename) {
if(!$filename) {
echo "The image doesn't exist ".$filename;
} else {
$post_data = array('device_timestamp' => time(),
'photo' => '@'.$filename);
return $post_data;
}
}
// Set the username and password of the account that you wish to post a photo to
$username = 'ig_username';
$password = 'ig_password';
// Set the path to the file that you wish to post.
// This must be jpeg format and it must be a perfect square
$filename = 'pictures/test.jpg';
// Set the caption for the photo
$caption = "Test caption";
// Define the user agent
$agent = GenerateUserAgent();
// Define the GuID
$guid = GenerateGuid();
// Set the devide ID
$device_id = "android-".$guid;
/* LOG IN */
// You must be logged in to the account that you wish to post a photo too
// Set all of the parameters in the string, and then sign it with their API key using SHA-256
$data ='{"device_id":"'.$device_id.'","guid":"'.$guid.'","username":"'.$username.'","password":"'.$password.'","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}';
$sig = GenerateSignature($data);
$data = 'signed_body='.$sig.'.'.urlencode($data).'&ig_sig_key_version=4';
$login = SendRequest('accounts/login/', true, $data, $agent, false);
if(strpos($login[1], "Sorry, an error occurred while processing this request.")) {
echo "Request failed, there's a chance that this proxy/ip is blocked";
} else {
if(empty($login[1])) {
echo "Empty response received from the server while trying to login";
} else {
// Decode the array that is returned
$obj = @json_decode($login[1], true);
if(empty($obj)) {
echo "Could not decode the response: ".$body;
} else {
// Post the picture
$data = GetPostData($filename);
$post = SendRequest('media/upload/', true, $data, $agent, true);
if(empty($post[1])) {
echo "Empty response received from the server while trying to post the image";
} else {
// Decode the response
$obj = @json_decode($post[1], true);
if(empty($obj)) {
echo "Could not decode the response";
} else {
$status = $obj['status'];
if($status == 'ok') {
// Remove and line breaks from the caption
$caption = preg_replace("/\r|\n/", "", $caption);
$media_id = $obj['media_id'];
$device_id = "android-".$guid;
$data = '{"device_id":"'.$device_id.'","guid":"'.$guid.'","media_id":"'.$media_id.'","caption":"'.trim($caption).'","device_timestamp":"'.time().'","source_type":"5","filter_type":"0","extra":"{}","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}';
$sig = GenerateSignature($data);
$new_data = 'signed_body='.$sig.'.'.urlencode($data).'&ig_sig_key_version=4';
// Now, configure the photo
$conf = SendRequest('media/configure/', true, $new_data, $agent, true);
if(empty($conf[1])) {
echo "Empty response received from the server while trying to configure the image";
} else {
if(strpos($conf[1], "login_required")) {
echo "You are not logged in. There's a chance that the account is banned";
} else {
$obj = @json_decode($conf[1], true);
$status = $obj['status'];
if($status != 'fail') {
echo "Success";
} else {
echo 'Fail';
}
}
}
} else {
echo "Status isn't okay";
}
}
}
}
}
}
위의 코드를 텍스트 편집기에 복사하여 붙여넣고 그에 따라 몇 가지 변수를 변경하고 VOILA! 나는 이것에 대한 기사 를 썼고 여러 번 해왔습니다. 여기 에서 데모를 참조 하십시오 .
답변
업데이트
이제 가능합니다 :
https://developers.facebook.com/docs/instagram-api/content-publishing
Content Publishing API는 미디어 개체를 게시 할 수있는 Instagram Graph API 끝점의 하위 집합입니다. 이 API를 사용하여 미디어 개체를 게시하는 것은 2 단계 프로세스입니다. 먼저 미디어 개체 컨테이너를 만든 다음 비즈니스 계정에 컨테이너를 게시합니다.
답변
이제 Instagram을 통해 기업은 새로운 Content Publishing Beta 엔드 포인트를 사용하여 게시물을 예약 할 수 있습니다.
https://developers.facebook.com/blog/post/2018/01/30/instagram-graph-api-updates/
그러나이 블로그 게시물 ( https://business.instagram.com/blog/instagram-api-features-updates) 은 해당 API를 Facebook 마케팅 파트너 또는 Instagram 파트너에게만 공개하고 있음을 분명히합니다.
게시물 예약을 시작하려면 Facebook 마케팅 파트너 또는 Instagram 파트너와 협력하십시오.
Facebook의이 링크-https: //developers.facebook.com/docs/instagram-api/content-publishing- 비공개 베타로 나열됩니다.
Content Publishing API는 Facebook 마케팅 파트너 및 Instagram 파트너에게만 비공개 베타 버전입니다. 현재 새로운 지원자를받지 않습니다.
그러나 이것은 당신이 그것을 할 방법입니다.
사진이 있습니다 …
https://www.example.com/images/bronz-fonz.jpg
해시 태그 “#BronzFonz”로 게시하고 싶습니다.
/user/media
가장자리를 사용하여 다음과 같이 컨테이너를 만들 수 있습니다 .
POST graph.facebook.com
/17841400008460056/media?
image_url=https%3A%2F%2Fwww.example.com%2Fimages%2Fbronz-fonz.jpg&
caption=%23BronzFonz
그러면 다음과 같이 / user / media_publish 에지를 사용하여 게시 할 컨테이너 ID (예 : 17889455560051444)가 반환됩니다.
POST graph.facebook.com
/17841405822304914/media_publish
?creation_id=17889455560051444
문서 의이 예 .
답변
IFTTT와 다른 많은 서비스를 사용해 보았지만 모두 인스 타 그램에서 인스 타 그램이 아닌 다른 플랫폼으로 작업을하거나 게시했습니다. 나는 Instagram이 현재 그러한 API를 제공하지 않는다는 것을 더 많이 읽었습니다.
블루 스택을 사용하는 것은 다시 무거운 설치를 포함하고 수동으로 만 작업을 수행합니다.
그러나 데스크톱 버전에서 Google 크롬을 사용하여 Instagram에 게시물을 올릴 수 있습니다. 약간의 조정이 필요합니다.
- 크롬을 열고 Instagram.com을 검색합니다.
- 크롬을 마우스 오른쪽 버튼으로 클릭하여 검사 요소로 이동하십시오.
- 개발자 도구의 오른쪽 상단 코어 너 메뉴 드롭 다운에서 더 많은 도구를 선택합니다.
- 네트워크 조건을 추가로 선택하십시오.
- 네트워크 선택 섹션에서 사용자 에이전트라는 두 번째 섹션을 참조하십시오.
- 자동 선택을 선택 취소 하고 Android 용 Chrome을 선택합니다. 주어진 사용자 에이전트 목록에서 합니다.
- Instagram.com 페이지를 새로 고칩니다.
UI가 변경되고 Instagram에 게시물을 올리는 옵션이 표시됩니다. 당신의 삶은 이제 쉽습니다. 더 쉬운 방법이 있으면 알려주세요.
나는 그것에 대해 https://www.inteligentcomp.com/2018/11/how-to-upload-to-instagram-from-pc-mac.html 에 썼습니다 .
작동 스크린 샷
답변
이 질문을 찾은 사용자의 경우 iPhone 후크를 사용하여 iPhone의 Instagram 공유 흐름 (앱에서 필터 화면으로)에 사진을 전달할 수 있습니다. http://help.instagram.com/355896521173347 그 외에는 현재 없습니다. API의 버전 1에서.
답변
API를 사용하여 인스 타 그램에 사진을 게시하는 API는 없지만 Google 확장 프로그램 “사용자 에이전트”를 설치하면 브라우저를 안드로이드 모바일 크롬 버전으로 전환하는 간단한 방법이 있습니다. 다음은 확장 링크입니다 https://chrome.google.com/webstore/detail/user-agent-switcher/clddifkhlkcojbojppdojfeeikdkgiae?utm_source=chrome-ntp-icon
확장 아이콘을 클릭하고 Android 용 크롬을 선택하고 Instagram.com을 엽니 다.