Задать вопрос
@mechanicnikodimich

Не могу получить токен при логине через google plus?

Всем добрый день.
Ситуация следующая:

Есть

@IBOutlet weak var googleButton: UIButton!

При нажатии на эту кнопку пользователь переходит на страницу авторизации на google и в этом моменте все работает нормально.

override func viewDidLoad() {
        super.viewDidLoad()
GIDSignIn.sharedInstance().clientID = "866444479638-sknrnea2aiuv6npjlcf6o3l4231k44hq.apps.googleusercontent.com"
        GIDSignIn.sharedInstance().shouldFetchBasicProfile = true
        GIDSignIn.sharedInstance().scopes = ["profile", "email"]
        GIDSignIn.sharedInstance().delegate = self
        GIDSignIn.sharedInstance().uiDelegate = self
}


Вот action при нажатии кнопки:

@IBAction func googleSignInClicked(sender: UIButton) {
        var googleSignIn: GIDSignIn!
        googleSignIn = GIDSignIn.sharedInstance();
        googleSignIn.shouldFetchBasicProfile = true;
        GIDSignIn.sharedInstance().signInSilently()
        googleSignIn.signIn() }


И вот собственно функция, обрабатывающая singIn

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
        if (error == nil) {
            print(user.userID  )
            print(user.authentication.idToken)
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let MainView = storyboard.instantiateViewControllerWithIdentifier("SuccedView")
            self.presentViewController(MainView, animated: true, completion: nil)    
        } else {
            print("\(error.localizedDescription)")
        }
    }


При нажатии на кнопку и срабатывания GIDSignIn.sharedInstance().signInSilently() мы имеем вот такую ошибку:
The operation couldn’t be completed. (com.google.GIDSignIn error -4.)

Просто же GIDSignIn.sharedInstance().signIn переводит нас на страницу введения логина и пароля и на этом вся ее жизнь заканчивается.

В AppDelegate у меня вот такая камбала:


func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        NSURLProtocol.registerClass(TrainStarURLProtocol)

        return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    }
    
    func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
        return GIDSignIn.sharedInstance().handleURL(url,
                                                    sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String,
                                                    annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
        
    }
    
    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
        var flag: Bool = false
        // handle Facebook url scheme
        if let wasHandled:Bool = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
            {
            flag = wasHandled }
        if let googlePlusFlag: Bool = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication!, annotation: annotation) {
            flag = googlePlusFlag
        }
        return flag
    }


В конечном итоге мне нужно получить токен пользователя G+ для регистрации его на сервере, но пока я получаю лишь шиш.
Подскажите, куда смотреть?

P.S. Исчезли логи функции

override class func canInitWithRequest(request: NSURLRequest) -> Bool {
  print("Request #\(requestCount++): URL = \(request.URL!.absoluteString) ")
}


Никто с подобным не сталкивался после танцев с g+?
  • Вопрос задан
  • 309 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы