前回の OAuth の認証部分に進化があったので、忘れないように書いておこう!
	HTTP のステータスをチェックしてリフレッシュする機能を付けてみたけど…
	機能が付いてソースが太ったので関数化した…
	冗長なのででかいけど、スリム化できると思う…
	// --------------------------------------------------------------------------------
	// --------------------------------------------------------------------------------
	//
	//    アクセストークン取得
	//
function getAccessToken(&$access_token,&$refresh_token){
	    $params = array(
	        'grant_type' =>       'authorization_code',
	        'client_id' =>        CLIENT_ID,
	        'client_secret' =>    CLIENT_SECRET,
	        'redirect_uri' =>     CALLBACK_URL,
	        'code' =>             $_GET['code'],
	    );
	    $headers = array(
	        'Content-Type: application/x-www-form-urlencoded',
	        'Content-Length: '.strlen(http_build_query($params))
	    );
	 
	    $options = array(
	        'http' => array(
	            'method' => 'POST',
	            'ignore_errors' => true,
	            'content' => http_build_query($params),
	            'header' => implode("\r\n",$headers)
	        )
	    );
$res = file_get_contents(TOKEN_URL, false, stream_context_create($options));
// HTTP result
	    $matches    = NULL;
	    preg_match('/HTTP\/1\.[0|1|x] ([0-9]{3})/', $http_response_header[0], $matches);
	    $status_code = $matches[1];
	    switch ($status_code) {
	        case '200':
	            // 200の場合
	            break;
	        case '401':
	            $res = tokenRefresh();
	            break;
	        default:
	              echo 'access token get error HTTP status '.$status_code;
	              exit;
	            break;
	    }
// echo 'access token "'.$status_code."\"<br />\n";
	    // レスポンス取得
	    $token = json_decode($res, true);
	    if(isset($token['error'])){
	        echo 'エラー発生';
	        exit;
	    }
	    $access_token     = $token['access_token'];
	    $refresh_token    = $token['refresh_token'];
	}
	// --------------------------------------------------------------------------------
	// --------------------------------------------------------------------------------
	//
	//    token refresh
	//
function tokenRefresh(){
	    if( !isset($_SESSION['refresh_token']) || strlen(trim($_SESSION['refresh_token'])) <= 0){
	        echo 'token get fail : refresh not found';
	        exit;
	    }
	    $refresh_token    = $_SESSION['refresh_token'];
	    $params = array(
	        'grant_type' =>       'refresh_token',
	        'client_id' =>        CLIENT_ID,
	        'client_secret' =>    CLIENT_SECRET,
	        'redirect_uri' =>     CALLBACK_URL,
	        'refresh_token' =>    $refresh_token
	    );
	    $headers = array(
	        'Content-Type: application/x-www-form-urlencoded',
	        'Content-Length: '.strlen(http_build_query($params))
	    );
	 
	    $options = array(
	        'http' => array(
	            'method' => 'POST',
	            'ignore_errors' => true,
	            'content' => http_build_query($params),
	            'header' => implode("\r\n",$headers)
	        )
	    );
$res = file_get_contents(TOKEN_URL, false, stream_context_create($options));
// HTTP result
	    preg_match('/HTTP\/1\.[0|1|x] ([0-9]{3})/', $http_response_header[0], $matches);
	    $status_code = $matches[1];
	    switch ($status_code) {
	        case '200':
	            // 200の場合
	            break;
	        default:
	            //    ログアウトしている
	            header("Location: " . ERR_LOGOUT);
	//          echo 'refresh token get error HTTP status '.$status_code;
	//          exit;
	//          break;
	    }
// echo 'refresh token'.$status_code."<br />\n";
	//    print_r($res);
	    return $res;
	}
	途中で $_SESSION に アクセストークンとリフレッシュトークンを保管する処理があります
	上の関数の戻ったあたりで、access_token と refresh_token をセッションに保管してあります
	(最初は引数へ格納していましたが、進化の途中の残骸ですので、適宜にチューニングしてくださいね!)
一応、テストさせて頂いてるサイトさんでは、これでリフレッシュできてますが、他のサイトさんでは未確認
ステータスに応じて処理する機能を追加できる様になったけど、文字じゃなくで数値化した方がステータスコードに反応しやすいかもしれないね!