エラー:Sign in with Appleで「登録が完了しませんでした」の解決方法!

この記事からわかること

  • Sign in with Apple発生したエラー解決方法
  • 登録が完了しませんでした」の原因対処方
  • 実機ビルド時にログインできない

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

自作したiOSアプリに「Sign in with Apple」を実装してみたのですが思わぬエラーが発生し、その原因と解決法をまとめていきます。

Sign in with Appleで発生したエラー:登録が完了しませんでした

エラーが発生したのは実装した「Sign in with Apple」のサインインボタンを押下後にサインインするタイミングです。本来ならサインインできるはずが以下も画像のように「登録が完了しませんでした」と表示され正常にサインインできませんでした。

エラー:Sign in with Appleで「登録が完了しませんでした」の解決方法!

これは自分のiPhoneへテスト段階でビルドした時とアプリを審査に出してレビュアー側で操作してもらっている時にも発生しました。エラーのせいでアプリ申請はリジェクトされてしまいました。

Hello,

The issues we previously identified still need your attention.

If you have any questions, we are here to help. Reply to this message in App Store Connect and let us know. 

Guideline 2.1 - Performance - App Completeness

We discovered one or more bugs in your app. Specifically, we were still unable to Sign up with Apple and received a message stating ”登録を完了できませんでした”

Sign in with Appleを実装した手順や環境

環境

実装手順

  1. Developer siteでSign in with Appleを有効にする
  2. Xcode側でSign in with Appleを追加
  3. AuthenticationServicesフレームワークを使って実装
【Swift/Firebase】AuthenticationでApple ID(Sign in with Apple)でログインを実装する方法 【Swift/Firebase】AuthenticationでApple ID(Sign in with Apple)でログインを実装する方法

解決のために試したこと

インターフェースを変更する

Storyboardを使った実装とSwift UIを使った実装の両方を試してみました。

Storyboard

import UIKit
import AuthenticationServices

final class AuthViewController: UIViewController {
    
    @IBOutlet    private weak var buttonView: UIView!
  
    // SetUp
    func setupProviderLoginView() {
        let authorizationButton = ASAuthorizationAppleIDButton()
        authorizationButton.addTarget(self, action: #selector(handleAuthorizationAppleIDButtonPress), for: .touchUpInside)
        authorizationButton.bounds = CGRect(x: 100, y: 1000, width: 200, height: 40)
        buttonView.addSubview(authorizationButton)
    }
    
    // Action
    @objc        func handleAuthorizationAppleIDButtonPress() {
        let appleIDProvider = ASAuthorizationAppleIDProvider()
        let request = appleIDProvider.createRequest()
        request.requestedScopes = [.fullName, .email]
        
        let authorizationController = ASAuthorizationController(authorizationRequests: [request])
        authorizationController.delegate = self
        authorizationController.presentationContextProvider = self
        authorizationController.performRequests()
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setupProviderLoginView()
    }
}

// MARK: - ASAuthorizationControllerDelegate
extension AuthViewController: ASAuthorizationControllerDelegate {
    
    func authorizationController(controller: ASAuthorizationController,didCompleteWithAuthorization authorization: ASAuthorization ) {
        // ログイン後に実行したい処理
    }
    
    func authorizationController(controller: ASAuthorizationController,didCompleteWithError error: Error) {
       // エラー操作
    }
}

// MARK: - ASAuthorizationControllerPresentationContextProviding
extension AuthViewController: ASAuthorizationControllerPresentationContextProviding {
    func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
        return self.view.window!
    }
}

Storyboard:【Swift】Sign in with Appleの実装方法!Apple IDを使ったログイン機能

SwiftUI

import SwiftUI
import CryptoKit
import FirebaseAuth
import AuthenticationServices

struct AppleAuthView: View {

    @Environment(\.colorScheme) var colorScheme
    
    var isDarkMode: Bool { colorScheme == .dark }
    
    var body: some View {
        VStack {
            SignInWithAppleButton(.signIn) { request in
                request.requestedScopes = [.fullName, .email]
            } onCompletion: { authResults in
                switch authResults {
                case .success(let authResults): 
                    print("完了")
                    break
                case .failure(let error):
                    print(error.localizedDescription)
                }
            }
            .signInWithAppleButtonStyle(isDarkMode ? .white : .black)
            .frame(width: 224, height: 40)
        }
    }
}

Swift UI:【Swift UI】Sign in with Appleの実装方法!SignInWithAppleButton

Sign in with Appleの実装はUIKitベースでもSwift Uiベースでも両方作成しましたが同様のエラーが発生しました。

各デバイスとXcodeのバージョンを更新する

各デバイスのOSのバージョンとXcodeのバージョンを最新のものに更新してみました。

しかしこれもエラー解決には至りませんでした。

おすすめ記事:【Xcode】キャッシュやアーカイブの削除方法!ストレージ圧迫を解決しよう

iPhoneを一度サインアウトしてみる

一度使用しているiPhoneのAppleアカウントをサインアウトしてみました。「設定」>「自身のAppleアカウント」>「サインアウト」をクリックします。サインアウトしてもiPhone内に保存している写真やメモなどは再度サインインすれば戻ってきますので安心してください。

しかしこれもエラー解決には至りませんでした。他にも色々なネットの情報や解決策を模索しましたがピンとくる解決方法を発見することはできませんでした。

Sign in with Appleのエラーでリジェクトされている

Sign Up Not Complete : Apple Sign- In

Error: Sign-Up Not Completed

解決に至った経緯

結果何気なくサインインを再度試してみたところ突然すんなりログインすることができました。なぜか時間が解決してくれたようです。

関係あるかはわかりませんがエラーが発生しなくなる前にDeveloper Forumsに登録し、ここで実際に「Sign in with Apple」を使用してサインインをしました。

Sign in with Appleを機能させるための何かしらの設定が反映されるのに少し時間がかかるのかもしれません。とりあえず解決できてよかったです。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index