react-native-google-signin で 'You must specify |clientID| in |GIDConfiguration|' エラーが出た
@react-native-google-signin/google-signin
でGoogleログイン機能を作ろうと思ったら、以下のようなエラーが出た
'You must specify |clientID| in |GIDConfiguration|'
ログインするには、webClientIdを指定する必要がある。それは適切に行っていた。
GoogleSignin.configure({ webClientId: 'id', });
GoogleService-infoの中身を確認すると、別のGoogleログインを実装しているアプリのものと比べて、CLIENT_ID
が欠けていた。
この場合、configureメソッドに iosClientId
を明示的に指定してあげる。
GoogleSignin.configure({ webClientId: 'id', iosClientId: 'ios id' });
iosClientIdは指定しなければGoogleService-infoから自動で読み込まれるが、GoogleService-infoファイル作成のタイミングで欠けていることもあるっぽい。 この場合、上記で示したように明示的に登録するか、新しく GoogleService-info を作成すればいい。
React Nativeアプリの初期化の後に、Androidのnamespaceを変えたときの注意
React Nativeで foo というアプリをセットアップすると、namespace、applicationIdは次のようになっている。
namespace "com.foo" ... applicationId "com.foo"
これを com.company.foo
に変える。そして、javaファイルで定義されているpackage名の部分も全て変える。
これでビルドすると以下のエラーが出る。
* What went wrong: Execution failed for task ':app:compileDevelopmentDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details.
mainディレクトリ下が java/com/foo/Main*.java
となっていると思うが、これを java/com/company/foo/Main*.java
にする必要がある。
Android Studioから変えたらこの辺の調整も自動でしてくれたはず。。
Googleログインで発生した [Error: DEVELOPER_ERROR] を解決する
React NativeのAndroid開発で、Googleログインを実装していたが、以下のようなエラーが出た。
[Error: DEVELOPER_ERROR]
FirebaseのAndroidアプリに SHA 証明書フィンガープリント
が設定されていないのが原因っぽいので登録する。以下のコマンドでキーストアファイルの中身を見る。
keytool -list -v -keystore ./android/app/debug.keystore -alias androiddebugkey -storepass android -keypass android
./android/app/debug.keystore
の部分は ~/android/debug.keystore
の可能性もあるので、パスを注意する。
この中のSHA1をSHA 証明書フィンガープリントに登録する。
これで開発環境のログインは成功する。
ただ、Google Play Consoleからデプロイした本番環境の製品だと上記の手順(キーストアファイルは本番のもの)で試しても失敗する。
Google Play Consoleからリリースする際、App Signingという再署名されるプロセスがあり、ビルドした時署名と、リリースされる時の署名は異なる。
なので、Play Consoleから該当のアプリページへ行き、左タブの [設定] -> [アプリの署名] からSHA1を見つけて、それを登録する。
Dockerで Cannot find module '../build/Release/sharp-linux-x64.node' が出たので解決した
Docker環境(Cloud Run)でsharpをインストールしているnodeサーバーを立てようとしたら
Cannot find module '../build/Release/sharp-linux-x64.node'
というエラーが出た。 sharpはインストール環境とランタイム環境を同じにしなくてはいけない特殊性があるのだが、その辺でエラー出してた。
自分はLinuxで動かしたかったので
yarn add --arch=x64 --platform=linux sharp npm rebuild --arch=x64 --platform=linux sharp // sharp-linux-x64.node が存在するかどうか確認 ls node_modules/sharp/build/Release
このコマンドをうち、再度デプロイしたら動いた。
React NativeアプリをXcodeでビルドしたら Command PhaseScriptExecution failed with a nonzero exit code というエラーが出たので解決した
React Nativeで作成しているiOSアプリをXcodeでビルドしたら
Node found at: /usr/local/bin/node dyld[39998]: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.71.dylib Referenced from: <D092FE6D-5639-3BBF-A0A6-1CE0F725CADB> /usr/local/Cellar/node/18.10.0/bin/node ... Command PhaseScriptExecution failed with a nonzero exit code
というエラーが出てビルド通らなかった。
libicui18n.71.dylibがロードされていないとあるが、これは icu4c
という brew でインストールしているパッケージが関係しているので確認してみる。
brew info icu4c
するとこのようになっていた。
==> icu4c: stable 72.1 (bottled) [keg-only]
エラーメッセージでは71が必要とされているけど、72がインストールされているので71をインストールしてみる。
// 該当ディレクトリに移動 cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core/Formula // 該当バージョンまで戻したいのでコミットログ確認 git log --follow icu4c.rb // 該当のコミットにチェクアウト git checkout e3317b86c11c644e88c762e03eb7b310c3337587 // チェックアウトしたバージョンのものをインストール brew reinstall ./icu4c.rb // 確認 brew info icu4c brew list icu4c --versions // ブランチ戻す git checkout master
これで再度ビルドが通るようになった。原因はbrew upgradeなどでバージョンが上がってしまっていたことが考えられるっぽい
docker push時に unauthorized: failed authentication エラー
Google CloudのArtifact Registryにpushしようとしたらこのエラー。
gcloud auth login
で再度認証すると解決する。