15

iOS Webアプリを作成しています(つまり、ページのブックマークがホーム画面に追加されたときにスタンドアロンモードで実行されるHTMLページ(Safariクロームはありません))。

onclickがFB.login()を呼び出すボタンがあります。スタンドアロンモードの場合、Webアプリは(予想どおり)Facebookのログインページにリダイレクトされますが、その後、白い画面でスタックします(すでに認証されているため、認証を求められませんが、認証画面は白い画面の前に発生します)、Webアプリに戻さないでください。

Safariアプリ内の同じフローが期待どおりに機能します。ログインをクリックするとFB.login()が呼び出され、Facebookへのログインを求める新しいページが開きます。アプリにログインして認証すると、そのページが閉じて元のページに戻ります。

スタンドアロンモードでは、FBログインが閉じてアプリにリダイレクトされる「2番目のページ」に問題があるようです(そうではありません)。そして、流れは壊れています。

これに対する何らかの回避策はありますか?

ありがとう、
-Esa

4

2 に答える 2

9

以下の回避策を試すことができます。それは私のために働いた。モバイルでは、クライアント側の認証 URL にリダイレクトします。

var isMobile = false;
try {
    isMobile = (window.location.href == top.location.href && window.location.href.indexOf("/mobile/") != -1);
} catch (e) {}
if (!isMobile) {
    FB.login();
} else {
    var permissionUrl = "https://m.facebook.com/dialog/oauth?client_id=" + appId + "&response_type=code&redirect_uri=" + redirectPage + "&scope=" + permissions;
    window.location = permissionUrl;
    return;
}
于 2012-06-27T17:15:23.967 に答える
8

以下を使用して、ホーム画面モードにあるかどうかを検出し、それに応じて正しいことを行いました。

if ("standalone" in navigator && navigator.standalone) {
  var permissionUrl = "https://m.facebook.com/dialog/oauth?client_id=" + appId + "&response_type=code&redirect_uri=" + window.location + "&scope=" + app_permissions;
  window.location = permissionUrl;
} else {
  FB.login(
    function(response) {
      ...
    },
    {scope: app_permissions}
  );
}
于 2013-02-15T20:46:14.977 に答える