4

アプリの設定では、モバイル URL として次の URL を使用しています。

https://example.herokuapp.com/mobile.php#&ui-state=dialog

ただし、スマートフォンを使用して Facebook からアプリにアクセスしようとすると、Facebook は数ミリ秒間 OAuth URL にリダイレクトしてから、次のようにリダイレクトします。

https://example.herokuapp.com/?state=63903485c518f2ae5deca667b9a............#_=_

/mobile.php が失われるため、代わりにデスクトップ バージョンが読み込まれます。

どうすればこれを修正できますか? どんなアドバイスでも大歓迎です。

どうもありがとうございました

編集:セキュリティコードの一部

try {
    $facebook = new Facebook(array(
            'appId'  => AppInfo::appID(),
            'secret' => AppInfo::appSecret(),
    ));
    $access_token=$_GET['access_token'];
    Log::debug("BaseControl:access token: ". $access_token);
    if(isset($access_token)){
        $facebook->setAccessToken($access_token);
    }
    $user_id = $facebook->getUser();
} catch (Exception $e) {
    exit("Error getting facebook data");
}

if ($user_id) {
    try {
        $basic = $facebook->api('/me');//se necesita access token, si no se tiene falla
    } catch (FacebookApiException $e) {
        if (!$facebook->getUser()) {
            exit("Invalid access token");
        }
    }
    if($basic==null){
        exit("Application not installed");
    }
    $user=UsersLogic::getUser($user_id);
    if($user==null){
        exit("User not registered in database");
    }

}
else{
    exit("No user logged");
}
4

3 に答える 3

6

アルテュール、ダッシュボードの設定が正しいことを再確認します。「FacebookログインのあるWebサイト」セクションに正しいURL(この場合はモバイルURL)が含まれていることを確認してください。[?]にカーソルを合わせると、ツールチップに「WebサイトのURL。セキュリティ上の理由から、このURLにのみリダイレクトされます」と表示されます。したがって、正しいリダイレクトURLを取得するには、そのフィールドのURLがユーザーにリダイレクトするURLであることを確認する必要があります。

それが言うように、Facebookはセキュリティ目的でそのURLにのみリダイレクトするので、アプリのデスクトップバージョンとモバイルバージョンがある場合、ユーザーを正しいページに送るためにリダイレクトを処理するために1つのエンドポイントが必要です。あなたの場合、リダイレクトURLはルートページにあるようです。次に行うべきことは、着信要求のユーザーエージェントをチェックし、適切にルーティングするために、ルートページにロジックを含めることです。モバイルブラウザを検出するためのオープンソースコードスニペットについては、http://detectmobilebrowsers.com/をチェックしてください。ルートページのURLを最初のフィールドに入力し、モバイルバージョンを2番目のフィールドに入力する必要があります。

それが役に立ったら教えてください。

于 2012-11-02T23:00:25.510 に答える
2

これで問題の核心を解決することはできませんが、他の回答が得られない場合に試すことができるアイデアが 1 つあります。

アプリのデスクトップ バージョンのインデックス ページで、ユーザー エージェントをチェックして、それがモバイル デバイスであるかどうかをテストできます。そうであれば、mobile.php ページにリダイレクトできます。

于 2012-11-02T07:27:33.973 に答える