Facebook on PhoneGap/Cordova——文件协议



到处找都找不到。当我在设备上运行PhoneGap应用程序时,我得到了这个错误(在浏览器中工作正常):

Given URL is not allowed by the Application configuration.: One or more of the given URLs is not allowed by the App's settings.  It must match the Website URL or Canvas URL, or the domain must be a subdomain of one of the App's domains.

这是因为我没有将主机添加到facebook应用程序配置中。但是,PhoneGap/Cordova通过file:///协议访问应用程序,所以我没有可以添加到Facebook的域名。

可能的选项:1)找出如何使用cordova原生插件(这很难,因为我们正在使用Parse), 2)切换cordova使用localhost而不是file://(不确定如何做到这一点)。

我一直在走这条路,最终选择了选项#1。因为我们没有真正处理一个网站,没有域名添加。Cordova需要使用file://我不认为有任何办法。使用插件的技巧是保持登录状态与Parse同步(使用Parse. facebook . login)。他的代码应该能帮到你。我是这样检查登录状态的:

try {
      console.log("Trying to get FB login status");
      return FB.getLoginStatus(function(response) {
        var accessToken, currentView, expDate, facebookAuthData, uid, user;
        console.log(response);
        if (response.status === "connected") {
          uid = response.authResponse.userID;
          accessToken = response.authResponse.accessToken;
          console.log("Logged in!");
          user = Parse.User.current();
          if (user != null) {
            console.log("we have a user");
          } else {
            console.log("we don't have a user... need to login with parse");
            expDate = new Date(response.authResponse.expirationTime);
            facebookAuthData = {
              id: response.authResponse.userID + "",
              access_token: response.authResponse.accessToken,
              expiration_date: expDate.toISOString()
            };
            Parse.FacebookUtils.logIn(facebookAuthData, {
              success: function(_user) {
                return console.log("Logged in with Parse!");
              },
              error: function(error1, error2) {
                return console.log("Unable to create/login as Facebook user");
              }
            });
          }
        } else {
          // not logged in to fb... 
        }
      });
} catch (e) {
    return console.log(e);
}

我是这样处理登录的:

return FB.Event.subscribe("auth.authResponseChange", function(response) {
      var expDate, facebookAuthData;
      if (response.status === "connected") {
        console.log(response.status);
        try {
          expDate = new Date(response.authResponse.expirationTime);
          facebookAuthData = {
            id: response.authResponse.userID + "",
            access_token: response.authResponse.accessToken,
            expiration_date: expDate.toISOString()
          };
          return Parse.FacebookUtils.logIn(facebookAuthData, {
            success: function(_user) {
              //return window.location.hash = "loginsuccess";
            },
            error: function(error1, error2) {
              console.log("Unable to create/login to as Facebook user");
            }
          });
        } catch (ex) {
          return console.log("parse login error " + ex);
        }
      } else if (response.status === "not_authorized") {
        // handle not auth event
      } else {
        // take them home?
      }
    });
}

最新更新