Сбой приложения при входе через google plus ios - PullRequest
0 голосов
/ 20 ноября 2018

Попробуйте интегрировать Google Plus логин.

Но когда я пишу let gpSignin = GIDSignIn.sharedInstance()

приложение вылетает с ошибкой

Завершение работы приложения из-за необработанного исключения 'NSRangeException', причина: '*** -[__NSArrayM objectAtIndex:]: индекс 0 за пределами для пустого массива '

Вот мой код в действии кнопки

  @IBAction func googleClicked(_ sender: Any)
{

    print(isConnectedToNetwork())
    if isConnectedToNetwork()
    {
        let gpSignin = GIDSignIn.sharedInstance()
        gpSignin?.scopes.append("https://www.googleapis.com/auth/plus.login")
        gpSignin?.delegate = self
        gpSignin?.uiDelegate = self

        gpSignin?.clientID = "my client ID"
        gpSignin?.shouldFetchBasicProfile = true
        gpSignin?.shouldGroupAccessibilityChildren = true

        if (gpSignin?.hasAuthInKeychain())!{
            print("Signed In")
           // GIDSignIn.sharedInstance().signInSilently()
            gpSignin?.signIn()
            // logInToBackendServerWithAuthIdToken()
        } else{
            print("Not Signed In")
            gpSignin?.signOut()
            gpSignin?.signIn()
            //  region.show(googleLoginView())
        }

    }
    else
    {
        networkError()

    }
} 

Пожалуйста, помогите мне решить эту проблему.Спасибо

1 Ответ

0 голосов
/ 20 ноября 2018

Вы не можете редактировать / добавлять массив областей, потому что это NSArray.

Попробуйте изменить его на значение ниже

@IBAction func googleClicked(_ sender: Any)
{

print(isConnectedToNetwork())
if isConnectedToNetwork()
{
    if let gpSignin = GIDSignIn.sharedInstance() {

    if gpSignin.scopes != nil {
                let scopes = NSMutableArray(array: gpSignin.scopes)
                scopes.add("https://www.googleapis.com/auth/plus.login")
                if let convertedScopes = scopes as? [Any] {
                    gpSignin.scopes = convertedScopes
                }
            }
    gpSignin.delegate = self
    gpSignin.uiDelegate = self

    gpSignin.clientID = "my client ID"
    gpSignin.shouldFetchBasicProfile = true
    gpSignin.shouldGroupAccessibilityChildren = true

    if (gpSignin.hasAuthInKeychain())!{
        print("Signed In")
       // GIDSignIn.sharedInstance().signInSilently()
        gpSignin.signIn()
        // logInToBackendServerWithAuthIdToken()
    } else{
        print("Not Signed In")
        gpSignin.signOut()
        gpSignin.signIn()
        //  region.show(googleLoginView())
    }


    }
}
else
{
    networkError()

}
} 
...