簡體   English   中英

使用Node.js和Passport在NativeScript Facebook身份驗證上出現CORS問題

[英]CORS issue on NativeScript Facebook authentication with Node.js and Passport

我已經通過Passport庫在Noje.js上實現了Facebook OAuth。 調用Facebook OAuth /auth/facebook的URL和Facebook回調URL /auth/facebook/callback如下:

loginRouter.get('/auth/facebook', passport.authenticate('facebook', { scope : 'email' }));

loginRouter.get('/auth/facebook/callback', passport.authenticate('facebook', {successRedirect: "/rs/login/me"})); 

我有兩個前端應用程序,一個在Web上(Angular2),另一個在移動設備上(Nativescript)。 首先,我嘗試在Angular2上實現前端,並對/auth/facebook進行Ajax調用,但未收到任何響應。 進一步的研究表明,盡管我已經將Express.js屬性設置為處理CORS屬性,如下所示:

app.use(function(req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,OPTIONS');
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, Access-Control-Allow-Origin');
    next();
});

來自facebook的響應未設置CORS標頭(stackoverflow鏈接) 因此,我采用的解決方案只是使用<a href>元素,該元素不會在響應時檢查CORS標頭(解決方案在此處) ,這使得所有內容都能在Angular2上完美運行。

但是當涉及到NativeScript時,我找不到任何方法來避免此CORS問題。 我正在使用訪存模塊通過URL /auth/facebook向Node.js發出Http GET請求,如下所示:

public loginFB() {
    return fetchModule.fetch("http://[MY_SERVER_IP]/auth/facebook", {
        mode: 'no-cors',
        method: 'GET' 
    }).then(handleErrors);
};

盡管我已將請求模式設置為“ no-cors”,但該解決方案根本行不通。 我試圖在飛行前再次在/auth/facebook/auth/facebook/callback方法中設置CORS標頭,但仍然沒有任何反應。 我的HTTP請求進入/auth/facebook方法,但據我觀察,中間件和/auth/facebook/callback方法的回調均未調用。 有什么解決方案?

通過設法獲得https://github.com/AntonioCuevaUrraco/nativescript-facebook-login的啟發,我設法使用了GraphAPI。 通過使用這種方法,我已經導入了Android版Facebook GraphAPI並以這種方式使用了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM