Expo, Supabase Google-Вход в систему DEVELOPER_ERROR. НЕ использовать Firebase

Я пытаюсь заставить Google OAuth работать с помощью Expo и Supabase, но продолжаю получать следующую ошибку ТОЛЬКО при попытке войти в систему на Android. Я не использую Firebase. Я не получаю эту ошибку в Интернете или iOS:

  {
    "nativeStackAndroid": [],
    "userInfo": null,
    "message": "DEVELOPER_ERROR",
    "code": "10"
  }

в файле GoogleSignInButton.native.tsx у меня есть это

export default function GoogleButton(props: any) {
  GoogleSignin.configure({
    scopes: [],
    webClientId: WEB_CLIENT_ID,
    iosClientId: IOS_CLIENT_ID,
    offlineAccess: true,
    forceCodeForRefreshToken: true,
  });
  
  ...
}

Я полагаю, что вход в систему Android работал несколько недель/месяцев назад, но я давно не проверял его во время разработки и не могу отследить, где что-то пошло не так.

Что также странно, так это то, что когда я вхожу в систему на iOS, при входе в систему отображается другое имя приложения, чем при входе в Android (изображения ниже). Фильмы предназначены для ios (успешно), а капибаратест — для Android (не работает). Я повторно использую старые учетные данные Google OAuth, фильмы, которые я создал для приложения, которое создавал раньше.

Вот мой файл package.json

{
  "name": "...",
  "main": "expo-router/entry",
  "version": "1.0.0",
  "scripts": {
    "start": "expo start",
    "android": "expo run:android",
    "ios": "expo run:ios",
    "web": "expo start --web",
    "test": "jest --watchAll",
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "@expo/vector-icons": "^14.0.0",
    "@gorhom/bottom-sheet": "^4.6.1",
    "@react-native-async-storage/async-storage": "1.21.0",
    "@react-native-google-signin/google-signin": "^11.0.1",
    "@react-native-picker/picker": "2.6.1",
    "@react-navigation/native": "^6.1.17",
    "@shopify/restyle": "^2.4.2",
    "@supabase/supabase-js": "^2.42.0",
    "expo": "~50.0.14",
    "expo-font": "~11.10.3",
    "expo-linking": "~6.2.2",
    "expo-router": "~3.4.8",
    "expo-splash-screen": "~0.26.4",
    "expo-status-bar": "~1.11.1",
    "expo-system-ui": "~2.9.3",
    "expo-web-browser": "~12.8.2",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "react-native": "0.73.6",
    "react-native-dotenv": "^3.4.11",
    "react-native-gesture-handler": "~2.14.0",
    "react-native-pager-view": "6.2.3",
    "react-native-safe-area-context": "4.8.2",
    "react-native-screens": "~3.29.0",
    "react-native-tab-view": "^3.5.2",
    "react-native-url-polyfill": "^2.0.0",
    "react-native-web": "~0.19.6"
  },
  "devDependencies": {
    "@babel/core": "^7.20.0",
    "@types/react": "~18.2.45",
    "jest": "^29.2.1",
    "jest-expo": "~50.0.4",
    "react-test-renderer": "18.2.0",
    "typescript": "^5.1.3"
  },
  "private": true
}

app.json

{
  "expo": {
    "name": "capybaratest",
    "slug": "capybaratest",
    "scheme": "com.name.capybaratest",
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/images/icon.png",
    "userInterfaceStyle": "automatic",
    "splash": {
      "image": "./assets/images/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "assetBundlePatterns": ["**/*"],
    "ios": {
      "supportsTablet": true,
      "bundleIdentifier": "com.name.capybaratest",
      "infoPlist": {
        "CFBundleURLTypes": [
          {
            "CFBundleURLSchemes": [
              "com.googleusercontent.apps.141673689420-cstuimdc24iel5o76me2vlint42gj66r"
            ]
          }
        ]
      }
    },
    "android": {
      "adaptiveIcon": {
        "foregroundImage": "./assets/images/adaptive-icon.png",
        "backgroundColor": "#ffffff"
      },
      "package": "com.name.capybaratest"
    },
    "web": {
      "bundler": "metro",
      "favicon": "./assets/images/favicon.png"
    },
    "extra": {
      "eas": {
        "projectId": "6e859fa6-d9e9-4511-b4d8-7f37398500b0"
      }
    },
    "plugins": [
      [
        "expo-font",
        {
          "fonts": ["./assets/fonts/OpenSans-Regular.ttf"]
        }
      ]
    ],
    "experiments": {
      "tsconfigPaths": true
    }
  }
}

Я попытался создать новую выставочную установку методом проб и ошибок с помощью Supabase и других конфигураций и прочитал массу обсуждений. Я пробовал много решений, но ничего не изменилось

1
0
422
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец мне удалось решить эту проблему с помощью этой темы: https://github.com/react-native-google-signin/google-signin/issues/1192

Проблема заключалась в том, что отпечаток сертификата SHA-1, настроенный в консоли Google, по какой-то причине был неправильным. Я считаю, что консоль инструктирует пользователей использовать эту команду keytool -keystore path-to-debug-or-production-keystore -list -v для создания сертификата SHA-1.

Вместо этого пользователям необходимо (после создания всех первоначальных учетных данных) использовать SHA-1 с вашего локального компьютера.

Выдержка из ветки github, на которую я дал ссылку:

Узнайте свой ключ подписи SHA-1 для вашего APK-файла для разработки или производства. Если вы выполнили сборку с использованием EAS, получите sha-1, запустив учетные данные eas, а затем выбрав android > com.yourbuild.app.dev. Поместите этот ключ SHA-1 и соответствующее имя пакета в свои учетные данные Android OAuth в консоли Google API.

  1. Перейдите к своему локальному проекту в командной строке (где находится ваш файл package.json).
  2. В командной строке введите eas credentials
  3. Выберите Android в появившихся опциях.
  4. Для вопроса Which build profile do you want to configure? я выбрал development-simulator
  5. Скопируйте свойство SHA1 Fingerprint, которое будет записано
  6. Вставьте его в консоль учетных данных Google для вашей конфигурации Android для SHA-1.
  7. Подождите, пока обновление не завершится (на это нет никаких указаний, но на странице указано, что это может занять более 5 минут).
  8. Повторите попытку входа в Google и молитесь, чтобы все сработало.

Другие вопросы по теме