【问题标题】:Inappbrowser callbackInappbrowser 回调
【发布时间】:2013-09-05 07:11:16
【问题描述】:

我曾尝试在使用 inappbrowser 登录 facebook 后回拨。但检查电子邮件、姓名等不起作用。这是我的代码

浏览器内调用

function onDeviceReady(){   
     var my_client_id = FBkey,
     my_redirect_uri = "http://www.fastabuy.com/index.php",
     my_type = "user_agent",
     my_display = "touch";

     var authorize_url = FBgraphapiurl+"/oauth/authorize?";
     authorize_url += "client_id=" + my_client_id;
     authorize_url += "&redirect_uri=" + my_redirect_uri;
     authorize_url += "&display=" + my_display;
     authorize_url += "&scope=publish_stream,email,user_likes";
     isfir = "true";

     var ref = window.open(authorize_url, '_blank', 'location=yes');
     ref.addEventListener('loadstop', function facebookLocChanged() {
         facebookLoc(my_redirect_uri)
     });
}

回调检查方法

  function facebookLoc(loc){
     if (loc.indexOf("http://www.fastabuy.com/index.php?") > -1){
       alert(loc.indexOf)
     }
  }

如何检查urlloc.indexOf>-1何时关闭inappbrowser。请帮我解决这个问题。

【问题讨论】:

  • 刚刚我在我的应用程序中完成了 facebook 任务的登录.. 看看我的回答应该可以解决你的问题

标签: facebook cordova sencha-touch-2 inappbrowser


【解决方案1】:

1) 您需要在 InAppBrowser 中使用loadstart 事件来检查重定向页面。

2) 登录成功后使用close方法关闭InAppBrowser。

3) 当你在回调中调用facebookLoc 函数时,你应该注意作用域,我正在使用me 变量来解决这个问题。

onFacebookLogin: function() {

    var me = this;
    var appInBrowser = window.open(authorize_url, '_blank', 'location=yes');

    appInBrowser.addEventListener('loadstart', function(event) {
         me.facebookLoc(event.url,appInBrowser);
    });    
}

facebookLoc : function(loc,appInBrowser) {
   if (loc.indexOf("www.facebook.com/connect/login_success.html") > -1){
         alert('Login success');
         appInBrowser.close();
   }
}

【讨论】:

  • 如何知道 url 何时到达重定向 url
  • @Fazil 我没听懂你的意思.. 你在问什么?
  • 我在 Facebook 上调用它的登录功能
【解决方案2】:

这里是一个示例https://github.com/raulduran/facebook-cordova

onDeviceReady: function() {
    app.onFacebookLogin();
},

onFacebookLogin: function() {

    var authorize_url  = "https://m.facebook.com/dialog/oauth?";
        authorize_url += "client_id=" + appId;
        authorize_url += "&redirect_uri=" + redirectUrl;
        authorize_url += "&display=touch";
        authorize_url += "&response_type=token";
        authorize_url += "&type=user_agent";

    if(permissions !== '') {
        authorize_url += "&scope=" + permissions;
    }

    var userDenied = false;
    var appInBrowser = window.open(authorize_url, '_blank', 'location=no');

    appInBrowser.addEventListener('loadstart', function(location) {

        if (location.url.indexOf("access_token") !== -1) {
            // Success
            var access_token = location.url.match(/access_token=(.*)$/)[1].split('&expires_in')[0];
            window.localStorage.setItem('facebook_accessToken', access_token);
            appInBrowser.close();
        }

        if (location.url.indexOf("error_reason=user_denied") !== -1) {
            // User denied
            userDenied = true;
            window.localStorage.setItem('facebook_accessToken', null);
            appInBrowser.close();
        }
    });
}

【讨论】:

    猜你喜欢
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多