我是Instagram的新手,基于实时照片更新。不明白这个过程,谁能告诉我如何在php中创建回调URL?从注册客户端的重定向uri需要链接到这个回调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);
答案 0 :(得分:0)
您错过了订阅过程中的重要一步(It's in the doc):
当您使用上述信息进行POST以创建新订阅时,我们会同时向您的回调URL提交GET请求[...]为了验证订阅,您的服务器必须通过集线器响应GET请求。仅限挑战参数:
换句话说,当您创建订阅时,他们会使用一些参数向您的回调URI发送GET请求,并且您必须在PHP中返回hub.challenge
参数(hub_challenge
,因为使用PHP .
的参数将转换为_
)。
因此,在您的回调URI中,您必须测试请求方法。如果是GET
,请执行以下操作:
exit($_GET['hub_challenge']);
如果它是POST
,那么它是订阅更新,因此您必须对原始主体进行json解码以获取数据,如文档中所述:)
答案 1 :(得分:0)
嗨,托马斯,我收到了一个错误,并且不知道为什么它不起作用......
的字符串(92) " {"元" {" ERROR_TYPE":" APISubscriptionError""代码" 400" ERROR_MESSAGE&# 34;:"无效 响应"}}"
来自订阅:
$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;
}