React Native Mobile App, NodeJS Api: - 403 - Legacy People API не использовался в проекте - PullRequest
0 голосов
/ 26 января 2020

Я новичок в разработке мобильных приложений 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.

Пожалуйста, помогите мне ту часть, где я делаю ошибки.

Спасибо

...