Instagram订阅标签在实时照片更新的步骤

instagram subscription tag steps on Real-time Photo Updates

本文关键字:更新 照片 实时 标签 Instagram      更新时间:2023-09-26

我是Instagram的新手,基于实时照片更新。不明白这个过程,谁能启发我如何在php中创建回调URL?从注册客户端的重定向 uri 需要链接到此回调 URL?下面的代码是我为回调 URL 所做的

$checkin_url = "https://api.instagram.com/v1/subscriptions/";
//$instagram[] for client_id, client_secret, redirect_uri
$parameters = array(
    'client_id' => $instagram['client_id'],
    'client_secret' => $instagram['client_secret'],
    'object' => 'tag',
    'aspect' => 'media',
    'object_id' => 'nofilter',
    'callback_url' =>  $instagram['redirect_uri']
);
$curl = curl_init($checkin_url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
print($response);

您错过了订阅过程中的重要步骤(在文档中):

当您使用上述信息发布以创建新订阅时,我们会同时向您的回调 URL 提交 GET 请求 [...]为了验证订阅,您的服务器必须仅使用 hub.challenge 参数响应 GET 请求:

换句话说,当你创建订阅时,他们会向你发送一个带有一些参数的 GET 请求,你必须返回hub.challenge参数(在 PHP 中hub_challenge,因为使用 PHP 时,带有.的参数被转换为 _ )。

因此,在回调 URI 中,必须测试请求方法。如果是GET,请执行以下操作:

exit($_GET['hub_challenge']);

如果是POST,则它是订阅更新,因此您必须对原始正文进行 JSON 解码以获取数据,如文档:)中所述


嗨托马斯,

我遇到了一个错误,不知道为什么它不起作用......

字符串(92) "{"meta":{"error_type":"APISubscriptionError","code":400,"error_message":"无效 响应"}}"

从订阅:

$callback_url = "http://myhost.com/auth/instagram/callback";
    $params = array(
        'client_id' => $ig_client_id,
        'client_secret' => $ig_client_secret,
        'aspect' => "media",
        'object' => "tag",
        'object_id' => "greentea",
        'callback_url' => $callback_url
    );
    $defaults = array(
        CURLOPT_URL => 'https://api.instagram.com/v1/subscriptions/',
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $params,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => array('Accept: application/json')
    );
    $ch = curl_init();
    curl_setopt_array($ch, $defaults);
    $jsonData = curl_exec($ch);
    curl_close($ch);
    var_dump($jsonData);

从回调:

if (isset ($_GET['hub_challenge'])){
    exit($_GET['hub_challenge']);
}
else {
    $rawdata = file_get_contents('php://input');
    $decode_data = json_decode($rawdata);
    echo $decode_data;
}