簡體   English   中英

OAuth2和Node.js-Google確認后無重定向

[英]OAuth2 & Node.js - No redirect after Google confirmation

我正在使用Node.js通過Google+驗證我的Web應用程序。 我已經按照這里的官方指示進行 我的代碼如下所示:

var google = require('googleapis');

// OAuth
var OAuth2 = google.auth.OAuth2;
var plus = google.plus('v1');
var oauth2Client = new OAuth2(
    'MY_CLIENT_ID', // Client id
    'MY_CLIENT_SECRET', // Client secret
    'http://localhost:8080/oauth' // Redirect url
);

function getOAuthUrl(){
    var url = oauth2Client.generateAuthUrl({
        access_type: 'offline',
        scope: 'https://www.googleapis.com/auth/plus.me'
    });

    return url;
}

// OAuth authorization
app.use('/oauth', function(req, res){
    var session = req.session;
    var code = req.query.code;

    oauth2Client.getToken(code, function(err, tokens) {
        // Now tokens contains an access_token and an optional refresh_token. Save them.
        if (!err) {
            oauth2Client.setCredentials(tokens);
            session['tokens'] = tokens;
            res.redirect(__dirname + '/public/html/redirect.html?r=1'); // Success!
        }else{
            res.redirect(__dirname + '/public/html/redirect.html?r=0'); // Fail!
        }
    });
});

該登錄頁面在我的文件夾的根目錄下稱為index.html 登錄頁面向/oauth/url發出ajax請求,該請求以用戶必須單擊的OAuth2 url作為響應。

JS在index.html

/* OAuth */
$.ajax({
    url: '/oauth/url',
    dataType: 'text',
    cache: false,
    success: function (e) {
        $('#login').attr('href', e);
    }
});

Node.js響應:

// Get OAuth URL
app.use('/oauth/url', function(req, res){
    var url = getOAuthUrl();
    res.end(url);
});

我可以單擊鏈接照常轉到認證頁面。 但是,當我選擇要進行身份驗證的帳戶時,頁面會凍結,並且不會像預期的那樣重定向到localhost:8080/oauth

更新:在控制台上的“網絡”選項卡上,我注意到對回調的GET請求已被取消。 該代碼由Node.js接收,請求也是如此。

控制台網絡日志

解決了:

問題在於靜態目錄不允許Node.js重定向頁面。 通過將重定向地址更改為/html/redirect.html進行了/html/redirect.html 謝謝@詹姆斯

暫無
暫無

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

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