Я пытаюсь заставить 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 и других конфигураций и прочитал массу обсуждений. Я пробовал много решений, но ничего не изменилось
Наконец мне удалось решить эту проблему с помощью этой темы: 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.
eas credentials
Which build profile do you want to configure?
я выбрал development-simulator
SHA1 Fingerprint
, которое будет записано