2013年3月6日水曜日

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


FaceBook連携のWEBアプリを作ってるときの話なのですが。。
An active access token must be used to query information about the current user.
というエラー。
出ました。ご他聞にもれず。
で、いろいろ情報収集。
まぁここらへんからたどれば、解決しそうな感じはしたのです。
http://fb.dev-plus.jp/forum/topic.php?id=67
でも、いっこうに改善されず。

ところが、ひょんなことから、localhost連携だと成功。
WEBサーバだと失敗。
んーーーー。よくある。それだ!
ってことで、WEBサーバ、リバースプロキシしてるんですよね。
だから、PHP、で$_SERVER['HTTP_HOST']がサーバ名になってまうわけです。
で、GREP。
その結果、以下のコードを発見。
  protected function getHttpHost() {
    if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
      return $_SERVER['HTTP_X_FORWARDED_HOST'];
    }
    return $_SERVER['HTTP_HOST'];
  }
コンストラクタにたは、
    if (isset($config['trustForwarded']) && $config['trustForwarded']) {
      $this->trustForwarded = true;
    }
そっか。ってことで、無事に、コンストラクタを以下にすることにより、解決。
 $facebook = new Facebook(array(
  'appId'  => $appId,
  'secret' => $secret,
  'trustForwarded' => true,
  'cookie' => true
 ));

でも、'trustForwarded'でぐぐっても、日本語情報、ほとんど皆無っすー。

0 件のコメント:

コメントを投稿