2016-07-22 75 views
0

我發現這個代碼:離子2 Facebook登錄

login() { 
    this.platform.ready().then(() => { 
     this.facebookLogin().then((success) => { 
      alert(success.access_token); 
     }, (error) => { 
      alert(error); 
     }); 
    }); 
} 


facebookLogin() { 
    return new Promise(function(resolve, reject) { 
     var browserRef = window.cordova.InAppBrowser.open("https://www.facebook.com/v2.0/dialog/oauth?client_id=" + "CLIENT_ID_HERE" + "&redirect_uri=http://localhost/callback&response_type=token&scope=email", "_blank", "location=no,clearsessioncache=yes,clearcache=yes"); 
     browserRef.addEventListener("loadstart", (event) => { 
      if ((event.url).indexOf("http://localhost/callback") === 0) { 
       browserRef.removeEventListener("exit", (event) => {}); 
       browserRef.close(); 
       var responseParameters = ((event.url).split("#")[1]).split("&"); 
       var parsedResponse = {}; 
       for (var i = 0; i < responseParameters.length; i++) { 
        parsedResponse[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1]; 
       } 
       if (parsedResponse["access_token"] !== undefined && parsedResponse["access_token"] !== null) { 
        resolve(parsedResponse); 
       } else { 
        reject("Problem authenticating with Facebook"); 
       } 
      } 
     }); 
     browserRef.addEventListener("exit", function(event) { 
      reject("The Facebook sign in flow was canceled"); 
     }); 
    }); 
} 

我有點困惑,如何在用戶與一些社交應用如Facebook簽署離子2應用識別/谷歌? 例如,我想創建一個登錄頁面,該頁面提示用戶登錄,並且一旦用戶登錄,就不會顯示該頁面。 我熟悉存儲會話/ cookie的nodejs + passportjs,但它如何處理Ionic 2?

+0

代碼的來源似乎並沒有從Driftyco/Ionicframework。可能你應該看看:http://ionicframework.com/docs/v2/native/facebook/ 或者提供你正在引用上面代碼的源代碼項目的信息。看起來像解析Cordova InAppBrowser中的一些登錄響應。 –

回答

0

有整合Facebook驗證離子應用不同的方法:

  1. 使用Javascript

    • CordovaOauth
  2. 離子本地

    實現任何Facebook驗證

離子本地是一個策劃組ES5/ES6 /打字稿包裝爲科爾多瓦/ PhoneGap的插件,使新增您需要將您的離子,科爾多瓦,或Web瀏覽移動應用程序方便任何原生功能。 - Facebook:http://ionicframework.com/docs/v2/native/facebook/

Page提供在您的Ionic應用程序中實現本地Facebook身份驗證所需的所有詳細信息。

希望這有助於回答您的問題和疑慮。