Instagramからデータベースに特定のタグを付けて写真を保存しようとしています。これまでのところ、データベース部分への書き込み以外はすべて問題ないようです。サブスクリプションは問題ありません。instagram API サイトから確認を得ました。
https://api.instagram.com/v1/subscriptions?client_secret=XXXXX&client_id=XXXXXX
{"meta":{"code":200},"data": [{"object":"tag","object_id":"hashtag","aspect":"media","callback_url":"http:\/\/MYDOMAIN.com\/instatag\/instatag\/callback.php","type":"subscription","id":"3848897"}]}
私が持っているコードには、このサイトのチュートリアルを使用しました: Instagram real time photo update with php
私の設定を反映するためにいくつかの部分を変更しましたが、リクエストが入ってくるのを見ることはできますが、データベースには何も書き込んでいません。
ここに私が持っているコードがあります:
<?php
require 'instagram.class.php';
require 'appdb.php';
// Initialize class for public requests
// EDIT YOUR CODES HERE
$instagram = new Instagram('hashtag');
$myString = file_get_contents('php://input');
$ALL = date("F j, Y, g:i a")." ".$myString."\r\n";
file_put_contents('./activity.log', $ALL, FILE_APPEND);
// this is how I get my next_min_id and this is just an example
// you can code your own script on how to get next_min_id
// EDIT YOUR CODES HERE
$min_id_result = mysql_query("SELECT * FROM `global_option` WHERE `option_variable`='next_min_id'");
//file_put_contents('./activity.log', (string)$min_id_result, FILE_APPEND);
while ($option_row = mysql_fetch_array($min_id_result)) {
$next_min_id = $option_row['option_value'];
}
// Get hashtag media
$tagMedia = $instagram->getTagMedia('HASHTAG', $next_min_id);
// Display results
// EDIT YOUR CODES HERE
$rows = array();
//var_dump($tagMedia->data)
foreach ((array)$tagMedia->data as $entry) {
file_put_contents('./activity.log', $tagMedia->data , FILE_APPEND);
if (empty($entry)) {
$url = $entry->images->standard_resolution->url;
$m_id = $entry->id;
$c_time = $entry->created_time;
$user = $entry->user->username;
$filter = $entry->filter;
$comments = $entry->comments->count;
$caption = mysql_real_escape_string($entry->caption->text);
$link = $entry->link;
$low_res=$entry->images->low_resolution->url;
$thumb=$entry->images->thumbnail->url;
$lat = $entry->location->latitude;
$long = $entry->location->longitude;
$loc_id = $entry->location->id;
$media_id = $entry->id;
// this is how I check if the media_id is already existed in my table
$result = mysql_query("SELECT * FROM `photos` WHERE `media_id`='$media_id'");
// if result is 0, I am inserting new row
if (mysql_num_rows($result)==0) {
$sql = "INSERT INTO `photos` (source, media_id, std_res, thumbnail, caption, user_id, user_username, user_full_name, user_profile_pic, published)
VALUES ('Instagram', '{$entry->id}', '{$entry->images->standard_resolution->url}', '{$entry->images->thumbnail->url}', '{$caption}', '{$entry->user->id}', '{$entry->user->username}', '{$entry->user->full_name}', '{$entry->user->profile_picture}', '1' )";
mysql_query($sql);
file_put_contents('./activity.log', $sql , FILE_APPEND);
if (!mysql_query($sql)){
die('Error: ' . mysql_error());
}
} else {
//echo 'exist ' . $entry->id;
}
}
}
// SETTING THE next_min_id IN MY TABLE
$min_tag_id = $tagMedia->pagination->min_tag_id;
$sql2 = "UPDATE `global_option` SET `option_value`='{$min_tag_id}' WHERE `option_variable`='next_min_id'";
if (!mysql_query($sql2)){
die('Error: ' . mysql_error());
}
//$challenge = $_GET["hub_challenge"];
//echo $challenge;
//exit(1);
?>
activity.log には次のものがあります。
2013 年 10 月 15 日午後 11 時 58 分 [{"changed_aspect": "media", "object": "tag", "object_id": "hashtag", "time": 1381903108, "subscription_id": 3848897, "data" : {}}] 2013 年 10 月 16 日午前 12:08 [{"changed_aspect": "media", "object": "tag", "object_id": "hashtag", "time": 1381903733, "subscription_id": 3848897、「データ」: {}}] 2013 年 10 月 16 日午前 12:12 [{"changed_aspect": "media"、"object": "tag"、"object_id": "hashtag"、"time": 1381903933 , "subscription_id": 3848897, "data": {}}] 2013 年 10 月 16 日午前 12 時 14 分 [{"changed_aspect": "media", "object": "tag"、"object_id": "hashtag"、"time": 1381904061、"subscription_id": 3848897、"data": {}}] 2013 年 10 月 16 日午前 12:25 [{"changed_aspect": "media", "object": "tag", "object_id": "hashtag", "time": 1381904759, "subscription_id": 3848897, "data": {}}] 2013 年 10 月 16 日午前 12:26 [{"changed_aspect" : "media", "object": "tag", "object_id": "hashtag", "time": 1381904776, "subscription_id": 3848897, "data": {}}] 2013 年 10 月 16 日午前 12:29 [{"changed_aspect": "media", "object": "tag", "object_id": "hashtag", "time": 1381904973,"subscription_id": 3848897、"データ": {}}]
必要な列を含む 2 つのテーブル (写真、global_option) を持つデータベースを作成しました。データベースで動作しているように見える唯一のものは、この *"UPDATE global_option
SET option_value
='{$min_tag_id}' WHERE option_variable
='next_min_id'";* であり、option_value の値を '0' に変更します。