0

リダイレクト URI、署名付きリクエスト、およびモバイル Web Facebook アプリに問題があり、これを台無しにしている箇所を特定できません。

example.com で、署名付きリクエストを使用してユーザー データを取得するアプリを実行しているキャンバス アプリを使用しています。モバイル ユーザーがアプリを使用できるように、モバイル バージョンを立ち上げることにしたので、新しいディレクトリ example.com/m を作成し、モバイル バージョンを作成しました。

現時点では、通常のアプリは完全に機能していますが、ユーザーが oauth 権限を許可すると、モバイル アプリは無限ループに陥ります。さまざまな URL を試してみましたが、わかりませんでした。モバイルの場合、署名されたリクエストは空で、その理由がわかりません。

私の Facebook 設定では、これをキャンバスの URL として設定しています: example.com これをモバイル Web の URL example.com/m として設定します。

私の通常のブラウザ アプリでは、次のコードを使用して Facebook から宣誓を取得しています。

$redir = "https://apps.facebook.com/example";
if(isset($_REQUEST["signed_request"]))
{
  $signed_request = $_REQUEST["signed_request"];
  list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
  $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
}

if (empty($data["user_id"]))
{
    $fb -> go("https://www.facebook.com/dialog/oauth?client_id={$app["appid"]}&redirect_uri=$redir&scope={$app["permissions"]}&response_type=token");
    exit;
} else 
{
    $fb -> access_token = "access_token=" . $data["oauth_token"];
}

このコードは正常に動作しています。私のモバイル バージョンではこのコードがあります (さまざまな URL をあちこちで試しましたが、まだ問題を回避できません)。

$redir = "https://apps.facebook.com/example/m";
if(isset($_REQUEST["signed_request"]))
{
  $signed_request = $_REQUEST["signed_request"];
  list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
  $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
}


if (empty($data["user_id"]))
{
    $fb -> go("https://www.facebook.com/dialog/oauth?client_id={$app["appid"]}&redirect_uri=$redir&scope={$app["permissions"]}&response_type=token");
    exit;
} else 
{
    $fb -> access_token = "access_token=" . $data["oauth_token"];
}
4

0 に答える 0