Cordova Firebase Facebook登录

时间:2016-01-27 00:28:17

标签: facebook cordova firebase

我无法使用Cordova在Facebook上登录我的应用程序。

我将Cordova In App Browser插件添加到我的config.xml中,如下所示:

<gap:plugin name="org.apache.cordova.inappbrowser" />

我在facebook对话框窗口中成功提示输入我的电子邮件和密码但是一旦我登录,就不会显示任何内容。这很奇怪,因为它之前正在工作,即使在返回并撤消对代码的更改后,我也不确定问题现在在哪里。

使用&#34;警报&#34;我能够确定ref.authWithOAuthRedirect之后的代码不再运行了,所以我不确定问题到底是什么。

这是我的login.html文件:

<body>
<button>
Login To Facebook
</button>
<div id="info"></div>
<script src="cordova.js"></script>
<script>
    $('button').click(function(){

    var ref = new Firebase("https://xxx.firebaseio.com");

    ref.authWithOAuthPopup("facebook", function(error, authData) {
      if (error) {
        if (error.code === "TRANSPORT_UNAVAILABLE") {
          // fall-back to browser redirects, and pick up the session
          // automatically when we come back to the origin page
          ref.authWithOAuthRedirect("facebook", function(error) { 
            $('#info').append(authData.facebook.displayName 
            + " " + authData.facebook.email + '<br />');
            $('#info').append('<img src="' + authData.facebook.profileImageURL + '"/>');
          });
        }
      } else if (authData) {
        // user authenticated with Firebase
        $('#info').append(authData.facebook.displayName 
        + " " + authData.facebook.email + '<br />');
        $('#info').append('<img src="' + authData.facebook.profileImageURL + '"/>');
      }
    }, {
      scope: "email" // the permissions requested
    });

    });
</script>
</body>

这是我的config.xml

<widget id="com.xxx.xxx" version="1.9.0">
    <name>My App</name>
    <description>
        Your app description here. 
    </description>
        <author email="example@gmail.com" href="http://example.com">
            My App
        </author>
    <content src="login.html"/>
    <access origin="*" />
    <access origin="https://xxx.firebaseio.com" />
    <access origin="https://auth.firebase.com" />
    <gap:plugin name="org.apache.cordova.inappbrowser" />
</widget>

1 个答案:

答案 0 :(得分:0)

在您的Facebook应用配置中,单击左侧导航菜单上的“设置”选项卡。然后转到顶部的“高级”选项卡,向下滚动到“安全”部分。在该部分的底部,将https://auth.firebase.com/v2/ / auth / facebook / callback添加到您的有效OAuth重定向URI,然后点击页面底部的保存更改。

Reference

修改 我建议您使用以下两个库在设备上登录facebook - 如果用户在设备上安装了facebook,请使用cordova-facebbok4 这将自动提示本机facebook应用程序登录。

如果未安装facebook,您可以编写使用OpenFB

的catch方法

无论如何,您必须使用authWithOAuthToken进行Facebook登录。 以下是使用cordova插件获取令牌的示例

//Inside Ionic ready
if($ionicPlatform.isWebView()){
$cordovaFacebook.login(["public_profile", "email"]).then(function(success){
                var token = success.authResponse.accessToken; 

                ref.authWithOAuthToken("facebook", token, function(error, authUserData){
                    if(error){
                        console.error("Authentication failed:", error);
                        $ionicPopup.alert({
                            title: "Error",
                            template: 'There was an error logging you in with facebook.'
                        });
                        d.reject(error);
                    }
                    else{ //Logged in!}
else{
//code for open fb login.}