2013-09-05 3 views
2

Я попытался перезвонить после входа в facebook с помощью inappbrowser. Но он не работает, чтобы проверить электронную почту, имя т.д. Вот мой кодОбратный вызов Inappbrowser

Inappbrowser вызова метода

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) 
    } 
    } 

Как проверить, если URL loc.indexOf>-1 в закрыть inappbrowser. Пожалуйста, помогите мне разобраться.

+1

только сейчас я закончил логин с facebook задачей в моем приложении .. увидеть мой ответ, который должен решить проблему – Viswa

ответ

5

1) Вам необходимо использовать событие loadstart в InAppBrowser для проверки перенаправленной страницы.

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(); 
    } 
} 
+0

, как знать, когда URL достигает перенаправление URL – Fazil

+0

@ Фазил, я тебя не понял .. за то, что ты просишь? – Viswa

+0

Я позвоню, что onFacebookLogin fuction – Fazil

4

Вот образец 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(); 
     } 
    }); 
}