【问题标题】:Unable to get JSON response from cURL无法从 cURL 获取 JSON 响应
【发布时间】:2015-05-29 09:12:59
【问题描述】:

当我在浏览器中点击 URL https://api.instagram.com/oauth/authorize/?client_id=&redirect_uri=http://localhost/Instagram_flow/result.php&response_type=code&scope=basic+comments+relationships+likes 时,我得到的响应是:

{"code": 400, "error_type": "OAuthException", "error_message": "您必须包含有效的 client_id、response_type 和 redirect_uri 参数"}

但是当我在这个 URL 上做一个 cURL 时:

 $curl=curl_init();
 curl_setopt($curl, CURLOPT_URL, 'https://api.instagram.com/oauth/authorize/?client_id=&redirect_uri=http://localhost/Instagram_flow/result.php&response_type=code&scope=basic+comments+relationships+likes');
 curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json'));
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
 $data = curl_exec($curl);
 echo $data;
 curl_close($curl); 

它什么也不返回。我也在 Postman 中点击了这个 URL,它也给出了 JSON 响应。

【问题讨论】:

    标签: php json curl oauth-2.0 instagram-api


    【解决方案1】:

    您必须在请求参数中包含一个 client_id...否则您不会对任何人进行身份验证。

    当您在 instagram 上注册您的应用程序时,您应该已收到可以在请求中发送的凭据,以便他们可以验证访问 API 的是您的应用程序。否则,任何有互联网的人都可以连接到 API 并弄乱其他人的数据。

    我建议通读 this OAuth2 tutorial 以更好地了解正在发生的事情。

    【讨论】:

    • 是的,我明白了。但是当我传递无效的客户端 ID(比如任何字符串)时,它也会在 JSON 中给出错误。我只想对该 URL 进行健康检查,以便可以向用户显示更合适和格式化的消息,而不是普通的 JSON。那就是在允许用户点击链接之前我做了一个 cURL。
    • 这是一个标准的 OAuth 身份验证错误消息。在您成功进行身份验证之前,您会一直看到一条错误消息。如果您添加了无效的 client_id,则错误消息应该不同(但您仍然会得到一个)。我不确定什么是“健康检查”——卷曲该 URL 的目的是获取访问令牌以访问 API。如果您只是在查询参数中发送垃圾,那么它会一直告诉您您没有进行身份验证...
    • 对于访问令牌,是的,我们确实卷曲了 url。我想是否有可能捕捉到那个 JSON 响应。为什么它没有卷曲返回?而在访问令牌的情况下,也会返回 JSON 响应,我们可以通过 curl 获取它。为什么这个 url 没有以同样的方式返回?有什么我想念的与 curl 相关的东西吗?
    • 对不起,我不明白你在问什么。 “我认为是否有可能捕获该 JSON 响应。为什么它没有在 curl 中返回?”你是什么意思?你是在问我为什么在你的 curl 调用中没有返回访问令牌?
    • 返回访问令牌,但当我们点击带有空或无效客户端 ID 的 anove url 时不会出现此错误。
    猜你喜欢
    • 2019-08-15
    • 2020-12-13
    • 2018-02-01
    • 2015-06-02
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    相关资源
    最近更新 更多