signInSilently() はエラーコード=-4 を生成します 質問する

signInSilently() はエラーコード=-4 を生成します 質問する

GIDSignIn.sharedInstance().signInSilently() がエラーを返すケースが発生しています:

エラー ドメイン = com.google.GIDSignIn コード = -4 「操作を完了できませんでした。 (com.google.GIDSignIn エラー -4。)」

実際、Google サインイン ドキュメントや stackOverflow ではこのエラーに関するドキュメントが見つからないようです。

以前にサインインしたユーザーがいない場合にサイレント サインインを要求した場合に、このエラーが発生することを予想していました。しかし驚いたことに、以前にサインインしたユーザーがいて、数秒後にもう一度サイレント サインインを試行した場合にも、このエラーが発生します。

私が困難に感じている 2 番目の問題は、次の方法でサインインしたユーザーがいるかどうかを判断することです。

GIDSignIn.sharedInstance().currentUser

これは nil または GIDGoogleUser オブジェクトのいずれかです。

この問題の解決に向けて前進するためのご助力は大歓迎です。

ありがとう

ベストアンサー1

からのエラー コードは次のとおりですGIDSignIn.h。このコードは、キーチェーンに認証トークンがない場合に-4から送信されます。コメントを参照してください。signInSilently

// A list of potential error codes returned from the Google Identity SDK.
typedef NS_ENUM(NSInteger, GIDSignInErrorCode) {
  // Indicates an unknown error has occured.
  kGIDSignInErrorCodeUnknown = -1,
  // Indicates a problem reading or writing to the application keychain.
  kGIDSignInErrorCodeKeychain = -2,
  // Indicates no appropriate applications are installed on the user's device which can handle
  // sign-in. This code will only ever be returned if using webview and switching to browser have
  // both been disabled.
  kGIDSignInErrorCodeNoSignInHandlersInstalled = -3,
  // Indicates there are no auth tokens in the keychain. This error code will be returned by
  // signInSilently if the user has never signed in before with the given scopes, or if they have
  // since signed out.
  kGIDSignInErrorCodeHasNoAuthInKeychain = -4,
  // Indicates the user canceled the sign in request.
  kGIDSignInErrorCodeCanceled = -5,
};

一般的に、Google SDK については、ヘッダー ファイルのコメントを確認するのが実に良い方法であることがわかりました。通常、公開されているドキュメントよりも多くの情報が提供されています。

おすすめ記事