Я новичок в разработке мобильных приложений ReactNative и потратил слишком много времени на inte rnet, чтобы решить проблему.
В основном я пытаюсь реализовать аутентификацию Google и Facebook в NodeJS API где ReactNative Mobile App - это клиентское приложение, которое будет использовать сервисы.
NodeJS Тестирование аутентификации API хорошо работает, если я использую токен, сгенерированный из Google Auth Playground. Мобильное приложение ReactNative аутентифицирует и предоставляет информацию пользователя и токен. Но если я использую токен, полученный из приложения ReactNative в NodeJS API, я получаю проблему с Legacy People API.
Шаги, которые я выполнил для реализации API и мобильного приложения, следующие:
A) Аутентификация API: пакет, используемый для аутентификации API passport
, passport-google-plus-token
Конфигурация паспорта
// Google oAuth token strategy
passport.use('google-token', new GoogleTokenStrategy(
{ clientID: gci, clientSecret: gcs, },
async (accessToken, refreshToken, profile, done) => {
User.upsertGoogleUser(accessToken, refreshToken, profile, function(err, user) {
return done(err, user);
})
}
));
Модель пользователя
userSchema.statics.upsertGoogleUser = function(
accessToken,
refreshToken,
profile,
cb
) {
var that = this;
return this.findOne(
{ "googleProvider.id": profile.id, },
function(err, user) {
// no user was found, let's create a new one
if (!user) {
var newUser = new that({
method: 'googleProvider',
email: profile.emails[0].value,
googleProvider: { id: profile.id }
});
newUser.save(function(error, savedUser) {
if (error) {
console.log(error);
}
return cb(error, savedUser);
});
} else {
return cb(err, user);
}
}
)
}
B) Мобильное приложение: пакет, используемый для аутентификации APP expo-google-app-auth
const signIn = async () => {
try {
const { type, accessToken, user } = await Google.logInAsync({
androidClientId: <Google-API-Client-Id-for android app>,
scopes: ["profile", "email"]
});
if (type === "success") {
console.log(user, accessToken);
} else {
console.log("cancelled")
}
} catch (e) {
console.log("error", e)
}
};
Я использовал отдельные идентификаторы клиентов Google под тем же проектом в консоли разработчика Google , в котором один для мобильного приложения, а другой для NodeJS API.
Пожалуйста, помогите мне ту часть, где я делаю ошибки.
Спасибо