我正在使用 Swift 2.0,Xcode 7.1和iOS 9.1 中的iPhone 5进行测试,并且连接良好。
我已经按照本教程(http://www.appcoda.com/google-sign-in-how-to/)了,一切都在模拟器上工作正常但是当我使用iPhone 5在真实设备上运行此应用程序时,它会打开Google搜索应用程序(其中包含一些注册帐户)处理登录。它提示用户选择一个帐户。选择帐户后,Google搜索应用会询问用户我的应用是否可以访问其信息。用户点击“登录”后, 之后,当回到应用程序代码时,请不要输入此功能:
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
if let err = error {
print(err)
}
else {
performSegueWithIdentifier("idSegueContent", sender: self)
}
}
我的主要ViewController()
课程就是这样:
import UIKit
class ViewController: UIViewController, GIDSignInDelegate, GIDSignInUIDelegate {
@IBOutlet weak var signInButton: GIDSignInButton!
var contentViewController: ContentViewController!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
GIDSignIn.sharedInstance().delegate = self
GIDSignIn.sharedInstance().uiDelegate = self
GIDSignIn.sharedInstance().clientID = "MY_CLIENT_ID"
GIDSignIn.sharedInstance().scopes.append("https://www.googleapis.com/auth/plus.login")
GIDSignIn.sharedInstance().scopes.append("https://www.googleapis.com/auth/plus.me")
GIDSignIn.sharedInstance().signInSilently()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: Google SignIn Delegate Methods
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
if let err = error {
print(err)
}
else {
performSegueWithIdentifier("idSegueContent", sender: self)
}
}
func signIn(signIn: GIDSignIn!, didDisconnectWithUser user: GIDGoogleUser!, withError error: NSError!) {
if let err = error {
print(err)
}
contentViewController.dismissViewControllerAnimated(true, completion: nil)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "idSegueContent" {
contentViewController = segue.destinationViewController as! ContentViewController
}
}
}
如果未安装Google搜索应用,那么Safari在应用中打开就可以了,登录后,委托回调方法就可以正常工作了。
答案 0 :(得分:1)
我遇到了同样的问题,并在重新启动手机后终于开始工作了。 (经过数小时的测试,检查和重新组织代码!)希望这个简单的解决方案可以帮助其他人免受麻烦。