instagram basic display apiの長期トークン更新ができない
PHPでinstagram basic display api の長期トークンを自動更新する機能を実装中ですが、
トークン更新時に吐き出すテキストファイルが白紙になってしまうので以降の更新ができなくなってしまいます。
該当のソースコード
PHP
1<?php 2$client_secret = "*******************"; //シークレットキー 3$token_refresh_time = 60*60*24*30; //トークン再取得の間隔(30日) 4$token_file_path = "./token/token.txt"; 5$photo_data_refresh_time = 60*60*24; //写真データの再取得の間隔(1日) 6$photo_data_file_path = "./instagram_api.json"; 7//保持しているトークンを取得する 8$fl = fopen($token_file_path, "r"); 9$access_token = fgets($fl); 10fclose($fl); 11//$token_refresh_timeの期間が過ぎたらトークンを再取得する 12$refresh = 0; 13if (!file_exists($token_file_path)) { 14 $refresh = 1; 15} else { 16 $filemtime = filemtime($token_file_path); 17 if ((time()-$token_refresh_time) > $filemtime) { 18 $refresh = 1; 19 } 20} 21if ($refresh == 1) { 22 $url = 'https://graph.instagram.com/access_token?grant_type=ig_exchange_token&client_secret='.$client_secret.'&access_token='.$access_token; 23 $curl = curl_init($url); 24 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 25 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 26 $response = curl_exec($curl); 27 curl_close($curl); 28 29 $decode = json_decode($response, true); 30 $access_token = $decode["access_token"]; 31 32 $fl = fopen($token_file_path, "w"); 33 fwrite($fl, $access_token); 34 fclose($fl); 35}
試したこと
自動更新の期日が来るとtoken.txtが白紙になってしまいますが、
手動でinstagram basic display api の長期トークンをを更新するとまた表示できるようになります。
あなたの回答
tips
プレビュー