繁体   English   中英

Cordova Firebase Facebook登录

[英]Cordova Firebase Facebook Login

我无法使用Cordova使Facebook登录名在我的应用程序上正常工作。

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

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

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

使用“警报”,我可以查明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>

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

参考

编辑我建议您使用以下两个库在设备上进行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.}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM