2016-10-26 13 views
0

私は一晩中、半日苦労して諦めて、ここで助けを求めてきました。私はstackoverflowの上、ここで複数のスレッドを読んだが、すべてのソリューションは、動作しているようですが、これも、起動時にアプリがクラッシュしてもスウィフト3.0でFacebookとGoogleのサインインAPIの両方を実装

2016-10-26 16:03:58.793 MotivaMe[3997:404331] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MotivaMe.ViewController 0x7ff1a0407700> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key loginButtonFB.' 

SOLUTION

固定SEEのBOTTOM

はEDIT:コンパイラは言う:「アプリケーションの実装を:openURL:sourceApplication:annotation:not found。あなたのApp Delegateにハンドラを追加してください。 "特に認証後、私は立ち往生して、アプリケーションにリダイレクトされません

これは私がまだ私がまだ勉強しているココアタッチとは確信していないので、これは私がiOSをコーディングしようとする初めてです。 すべてのヘルプは感謝(私が間違っているものを手に入れることができないので、修正を超える説明は本当にいただければ幸い、皆のおかげで)

はここAppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
{ 

    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 

    var configureError: NSError? 
    GGLContext.sharedInstance().configureWithError(&configureError) 
    assert(configureError == nil, "Error configuring Google services: \(configureError)") 

    GIDSignIn.sharedInstance().delegate = self 

    return true 

} 

func application(application: UIApplication, openURL url: NSURL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool 
{ 

    let googleDidHandle = GIDSignIn.sharedInstance().handle(
     url as URL!, 
     sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, 
     annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 

    let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(
     application, 
     open: url as URL!, 
     sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, 
     annotation: options [UIApplicationOpenURLOptionsKey.annotation]) 

    return googleDidHandle || facebookDidHandle 
} 

// The sign-in flow has finished and was successful if |error| is |nil|. 
func sign(_ doLoginGoogle: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) 
{ 
    if (error == nil) 
    { 
     // Perform any operations on signed in user here. 
     let userId = user.userID     // For client-side use only! 
     let idToken = user.authentication.idToken // Safe to send to the server 
     let fullName = user.profile.name 
     let givenName = user.profile.givenName 
     let familyName = user.profile.familyName 
     let email = user.profile.email 
     // ... 
     print(userId,idToken,fullName,givenName,familyName,email) 
    } 
    else 
    { 
     print("\(error.localizedDescription)") 
    } 
} 

されており、ここで評価されてViewController.swift

override func viewDidLoad() { 
    super.viewDidLoad() 


    GIDSignIn.sharedInstance().uiDelegate = self 
    GIDSignIn.sharedInstance().signInSilently() 
} 

@IBOutlet weak var doLoginFacebook: FBSDKLoginButton! 
@IBOutlet weak var doLoginGoogle: GIDSignInButton! 

func loginButtonDidLogOut(_ doLoginFacebook: FBSDKLoginButton!) 
{ 
    print("Did log out of facebook") 
} 

func loginButton(_ doLoginFacebook: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) 
{ 
    if error != nil 
    { 
     print(error) 
     return 
    } 
    else 
    { 
     if(FBSDKAccessToken.current() != nil) //useless check but want to get confident with the api 
     { 
      //TODO implement switching pages on login 
      print("Sucessfully logged into facebook!") 
     } 
    } 
} 
+0

ストーリーボードまたはNibを使用していますか? – dirtydanee

答えて

0

は、私は強くあなたの出口接続のいずれかがあなたのStroyboardやペン先に捕まってしまったことを、疑います。これは時々起こる可能性があるので、アウトレット接続を更新/削除する場合は、Interfaceビルダーからも削除するようにする必要があります。

これを修正するには、インターフェイスエディタでviewControllerを選択します。 右側のパネルに表示されています。そこ

enter image description here

あなたはまだそれの隣に少し説明マークで、loginButtonFBが接続されて見ることができるはずです。この接続を削除すると、問題が解決するはずです。

+0

問題があり、アプリを正しく実行できるようになりました。私はFacebookやGoogleでサインインしようとするたびに正しく動作しませんが、認証フェーズが完了し、コンパイラが私がdelegat.swiftのハンドラを正しく実装していないと言われた後に固まってしまいます。 正確にこれがエラーです: "アプリケーションの実装:openURL:sourceApplication:注釈:not found。ハンドラをApp Delegateクラスに追加してください:MotivaMe.AppDelegate" 私のfunc アプリケーションで何かが間違っています(_アプリケーション:UIApplication、open url:URL 、..] – Manfredi6

+0

これは他の問題です;)固定する必要がある – dirtydanee

+0

x)は何かヒントがありますか? – Manfredi6

関連する問題