【问题标题】:how to post a like or delete an instagram like using instagram api?如何像使用 instagram api 一样发布喜欢或删除 instagram?
【发布时间】:2013-09-17 14:36:59
【问题描述】:

大家好,任何人都可以告诉我如何像使用 api 一样发布点赞和删除 instagram 吗? 我尝试使用此代码删除类似但我没有从 ajax 调用中得到任何响应。谁能告诉我我在这里做错了什么?这可能在做 php 吗?如何?

xxxxxxxxxxxxxxxxxx_xxxxxxxx ==> Media-Id 例如:23424343243243_2343243243

Instagram API Docs for Deleting Like

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

<script type="text/javascript">
function deleteLike() {

alert("inside function");

    var url = "https://api.instagram.com/v1/media/xxxxxxxxxxxxxxxxxx_xxxxxxxx/likes?access_token=XXXX";
    $.post(url, {
        "method": "delete",
    }, function(data) 
       {
         var ajaxResponse = data;

          alert("success"+ajaxResponse);

    })
    }

</script>
</head>
  <body onload="deleteLike();">


</html>

Edited:cross domain php curl:(但是如何判断这是post方法还是delete方法?”

$url = "https://api.instagram.com/v1/media/xxxxxxxxxxxxxxxxxx_xxxxxxxx/likes?access_token=XXXX";

        $api_response = get_data(''.$url);
        $record = json_decode($api_response); // JSON decode 



/* gets the data from a URL */
function get_data($url) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

【问题讨论】:

  • 您正在执行跨域请求。这在基于浏览器的 javascript 中是允许的。从服务器 A 加载的代码只能向服务器 A 发出 AJAX 请求。
  • @MarcB 有大量使用 AJAX 访问 Instagram API 的示例。你确定吗?
  • 是的,但是他们要么使用 JSONP 绕过跨域限制,要么使用直接从 instagram 加载的 ajax JS 代码。如上所述,JS 代码来自 jquery cdn,包含页面是从 OP 自己的站点加载的。在此配置中,ajax 代码不可能在 instagram 上戳,除非它是 jsonp 请求。
  • 感谢您的回复。我认为这是跨域问题。如何从我自己的 php 脚本中向 api 发出 curl 删除请求并从我的 ajax 调用该 php?我不知道如何进行 curl 调用并告诉 curl 是 post 还是 delete 请求!你能告诉我怎么做吗?
  • @user1788736:使用 CURLOPT_CUSTOMREQUEST 设置要使用的“动词”:php.net/manual/en/function.curl-setopt.php

标签: javascript php jquery ajax instagram


【解决方案1】:

编辑:根据 API 规范,您需要使用 DELETE 类型的请求。为此,请指定{type: "DELETE"},而不是{"method": "delete"},并使用$.ajax() 函数。在此处查看相关问题:How to send a PUT/DELETE request in jQuery?

你确定你的 POST 请求已经被执行了吗?它可能根本没有运行,请在 Developer Tools / Firebug / 等中检查请求。并以 jQuery 方式初始化您的请求,不要使用突兀的 JS:

$(function(){
    deleteLike();
});

使用success参数的方式需要声明更多参数的函数:success(data, textStatus, jqXHR)。这也可能导致不当行为。请在此处阅读文档:http://api.jquery.com/jQuery.post/

我建议你使用更方便的.done()函数:

$.post(url, { "method": "delete"})
  .done(function(data) {
    var ajaxResponse = data;
    alert("success: " + ajaxResponse);
  })
  .fail(function() {
  // check for error here
  });

您肯定也应该对检查.fail() 结果感兴趣 - 很可能您在准备请求时遗漏了一些东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 2015-09-26
    • 1970-01-01
    • 2015-08-01
    • 2012-09-03
    • 1970-01-01
    相关资源
    最近更新 更多