私はMEANスタックを使用してREST APIを使用し、Passport JSを使用して認証を管理するアプリケーションで作業しています。ログインしているユーザーのためにGoogleに接続する(承認する)
認証では、バックエンドとフロントエンド間の通信にはJTWのトークンを使用します。トークンは、ローカルのユーザー名とパスワードに基づいて生成されます。
GoogleカレンダーAPIで使用するために、ユーザーのGoogleアカウントをプロフィールに追加(承認)したいと考えています。 (this->https://github.com/wanasit/google-calendarを使用)
私は既にGoogle認証ページにユーザーを送り、そこからトークンを取得することができました。問題は、ユーザーがページにリダイレクトされると、JWTトークンが失われてユーザーがその要求をチェックすることです。
現在ログインしているユーザーを取得する方法や、authorizeメソッドを呼び出すときにカスタムコールバック認証ヘッダー/ paramを渡す方法はありますか?
auth.js:
var googleParams = {
clientID: config.auth.google.clientID,
clientSecret: config.auth.google.clientSecret,
callbackURL: config.auth.google.callbackURL
}
var googleStrategy = new GoogleStrategy(googleParams, function (token, refreshToken, profile, done) {
profile.token = token;
return done(null, profile);
});
路線:
rotas.get(
'/google',
auth.authenticate(), // will check the current user
auth.isLoggedIn, // make sure the user is really logged in
auth.authorize('google', { scope: googleScope, passReqToCallback: true }) // redirects to google to get the token
);
rotas.get('/callback/google',
auth.authorize('google', { scope: googleScope, passReqToCallback: true })
auth.authRedirect()
);
上記auth.authRedirect()
機能は私が見つけた最も近いソリューションです。これはユーザーが認証されているフロントエンドの既知のルートにユーザーをリダイレクトするExpressミドルウェアですが、必要なすべてのGoogleプロフィールと情報を取得することはできません...
うーん...いいね!私はこの 'state'プロパティを知らなかった。よくやった。 –