edo1z blog

プログラミングなどに関するブログです

さくらレンタルサーバのSIN SSL利用してると、Facebook APIがエラーになる

エラーは下記です。

An active access token must be used to query information about the current user.

恐らくさくらのレンタルサーバのSSL使うと、httpsアクセスだと認識されないことが原因なのではないかと思った。facebookのSDKみたらやはり、$_SERVER['HTTPS']を見てたので、下記のようにしたらできた。

if(isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR'])){
    $_SERVER['HTTPS'] = 'on';
}

ちなみに、このプログラムはcakePHP2を使っているのですが、twitterやfacebookなどのコールバックURLをRouter::url()を使って動的に取得させていて、これまたhttpsアクセスしてるのにhttpsと勘違いされて、http://***というアドレスにされてしまっていた。これについては、core.phpのConfigure::write('App.fullBaseUrl', 'http://example.com');に、httpsアドレスをベタ打ちしたら大丈夫になった。