2016-10-26 12 views
0

私は多くのガイドがあるカスタムloginButtonを作成しようとしています。しかし、それらのどれもがSwift 3用に更新されていないので、私は自分自身で機能を作成しようとしました。しかし、私は間違いを続けている。カスタムFacebook loginButton関数Swift 3

最初私はambiguous reference to member login(_:completion:)

@IBAction func LoginPressed(_ sender: AnyObject) { 
    let fbLoginManager : LoginManager = LoginManager() 
    fbLoginManager.logIn(["public_profile", "email", "user_friends"], viewController: self, completion: { (result, error) -> Void in 

     if (error == nil){ 
      let fbloginresult : FBSDKLoginManagerLoginResult = result! 
      if fbloginresult.grantedPermissions != nil { 
       if(fbloginresult.grantedPermissions.contains("email")) 
       { 
        self.getFBUserData() 
        fbLoginManager.logOut() 
       } 
      } 
     } 

    }) 

} 

私はあなたの最初の問題を解決するには、以下がありませんCannot convert value of type (_, _, _) -> Void to expected argument type (HTTPURLResponse?, GraphRequestResult<GraphRequest> -> Void)

func getFBUserData(){ 
    if((AccessToken.current) != nil){ 
     GraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).start({ (connection, result, error) -> Void in 

      if (error == nil){ 
       //everything works print the user data 
       print(result) 
      } 
     }) 
    } 
} 
+0

[FacebookログインiOS 10 - Swift 3](http://ashishkakkad.com/2015/05/facebook-login-swift-language-ios/) –

答えて

1

を得ている第二取得しています:にcompletion:単語を追加する必要が関数の終わり。あなたの関数は次のようになります。

fbLoginManager.logIn(["public_profile", "email", "user_friends"], viewController: self) { result in 
    // handle the result 
} 

あなたが呼び出しの終わりから余分な)を削除していることを確認します。

2つ目の問題は2つの部分に分かれます。補完ハンドラ構文を更新する必要があります。さらに、パラメータの1つが削除されました。あなたの機能は次のようになります:

GraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).start { (urlResponse, requestResult) in  
    if (error == nil) { 
     //everything works print the user data 
     print(result) 
    } 
} 

また、このtutorialは非常に有望です!

また、hereは、githubのSDKのリンクです。Samplesプロジェクトの例をご覧ください。

+0

最初に依然としてメンバーログインへのあいまいな参照を返す_:completion:) 'secondは魅力のように動作します –

+0

swift 3のパラメータリストも変更されたようです。 パラメータリストのエラーを削除してみます。私は答えを更新しました。 – dirtydanee

+0

は機能しません。私は文の中で完了しないという同じエラーの原因を与え続けます。 –

関連する問題