bir node.js 'ın tanıtım book (Google OpenID tarafından express.js uygulamasını kullanarak kimlik doğrulama stratejisi) son örneği geliştirirken, sonra (20 Nisan 2015 tarihinde yürürlüğe giren) (passport-google-oauth2
) paketiyle (Google OAuth 2.0 tarafından kimlik doğrulama stratejisi) ve its documentation's page ve example here numaralarındaki endikasyonları takip eden passport-google
paketinin değiştirilmesi; modülü tarafından atılan Google+ hesabımı seçtikten sonra aşağıdaki hata oluştu: somut olarak this._oauth2.get("https://www.googleapis.com/plus/v1/people/me",...)
, userProfile(accessToken, done)
yöntemiyle. İlgili kaynak kodu ve modül bağımlılıkları aşağıdadır.node.js "pasaport-google-OAuth2" teslim Ekspres uygulamasında hata "kullanıcı profili alınamadı"
Problemin kökü ne olabilir?
beton hatadır:
InternalOAuthError: failed to fetch user profile
at <...>\web-app\b4\node_modules\passport-google-oauth2\lib\oauth2.js:92:28
at passBackControl (<...>\web-app\b4\node_modules\passport-google-oauth2\node_modules\passport-oauth2\node_modules\oauth\lib\oauth2.js:124:9)
at IncomingMessage.<anonymous> (<...>\web-app\b4\node_modules\passport-google-oauth2\node_modules\passport-oauth2\node_modules\oauth\lib\oauth2.js:143:7)
at IncomingMessage.emit (events.js:129:20)
at _stream_readable.js:908:16
at process._tickCallback (node.js:355:11)
ilgili uygulamanın kod şudur:
passport = require('passport'),
//...
GoogleStrategy = require('passport-google-oauth2').Strategy; // #passport-google-oauth2
//...
/***** #passport-google-oauth2 vv *****/
passport.use(new GoogleStrategy({
clientID: "a_specific_value",
clientSecret: "another_specific_value",
callbackURL: "http://127.0.0.1:3000/auth/google/callback",
passReqToCallback:true
},
function(request, accessToken, refreshToken, profile, done) {
profile.identifier=profile.id;
return done(null, profile);
}
));
/***** #passport-google-oauth2 ^^ *****/
//...
/***** #passport-google-oauth2 vv *****/
app.get('/auth/google',
passport.authenticate('google', { successRedirect: '/',scope:
[ 'https://www.googleapis.com/auth/userinfo.email']})
);
app.get('/auth/google/callback',
passport.authenticate('google', {
successRedirect: '/',
failureRedirect: '/'
}));
/***** #passport-google-oauth2 ^^ *****/
uygulama aşağıdaki bağımlılıklar vardır:
[email protected] ├─┬ [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ └── [email protected] ├─┬ [email protected] │ ├── [email protected] │ └── [email protected] ├─┬ [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected] ├─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ ├── [email protected] │ │ └── [email protected] │ └── [email protected] ├─┬ [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected] ├─┬ [email protected] │ └── [email protected] ├─┬ [email protected] │ ├── [email protected] │ └── [email protected] ├─┬ [email protected] │ └─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ └── [email protected] ├── [email protected] ├── [email protected] └─┬ [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├─┬ [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected] ├─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ └── [email protected] ├─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ └── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] ├── [email protected] └── [email protected]
:
Ayrıca
profile scope
alabilirsiniz: Yerine, biz bu bir kullanmalıdır benim için de ne oldu, teşekkürler! – Nocturno
Ayrıca, https: // www.googleapis.com/auth/userinfo.profile' ve https: // www.googleapis.com/auth/userinfo.email '' profili 've 'e-posta olarak değiştirilen kullanım biçimlerini de kullandım. sırasıyla. – Samin
wow, bu konuda çok zaman geçirdi. Gerçekten bir çeşit hata vermeliler! Benim için geri arama –