2015-09-15 9 views
5

私はFBのログインにこのコードを使用していた。iOS用のFacebook SDK 4.6でログインを使用するにはどうすればよいですか?

@IBAction func fbloginbtn(sender: AnyObject) { 

    FBSDKLoginManager().logInWithReadPermissions(["public_profile", "email","user_location","user_about_me", "user_photos", "user_website"], handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in 
     if (error == nil){ 
      let fbloginresult : FBSDKLoginManagerLoginResult = result 
      if(fbloginresult.grantedPermissions.contains("email")) 
      { 
       if((FBSDKAccessToken.currentAccessToken()) != nil){ 
        FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in 
         if (error == nil){ 
          //do sth 
         } 
        }) 
       } 
      } 
     } 
    }) 
} 

しかしloginwithreadpermissionsすることは、私はこのコードを変更する必要がありますどのように

SDK 4.6では推奨されていませんか?

+0

ちょうど確かめて、4.6は** Facebook ** SDKバージョンです、そうですか? ** iOS ** SDKのバージョンではありませんか? (それは古すぎるだろう)。 –

+1

ああ申し訳ありませんが、iOS用Facebook SDK –

+0

おそらく、Facebook SDKに精通している人にとってはおそらく明らかですが、他の人にとっては多少混乱するかもしれません。それを固定してくれてありがとう。 –

答えて

13

ドキュメントを参照すると、代替APIの説明も表示されます。 FBSDKLoginManagerのドキュメントから 、それは言う:

- (void)logInWithReadPermissions:(NSArray *)permissions 
         handler:(FBSDKLoginManagerRequestTokenHandler)handler 
__attribute__((deprecated("use logInWithReadPermissions: fromViewController:handler: instead"))); 

だから、ログインシーケンスが開始されたところから判断するために、同様UIViewControllerの追加のパラメータを取り、新たな方法があります。ドキュメントが言うように:

- (void)logInWithReadPermissions:(NSArray *)permissions 
       fromViewController:(UIViewController *)fromViewController 
       handler:(FBSDKLoginManagerRequestTokenHandler)handler; 

し、パラメータの説明は言う:

fromViewController - ビューコントローラから提示します。 nilの場合、 最上位ビューコントローラは、 が可能であると自動的に判断されます。

一つだけ追加のパラメータがあります、ので、あなたはこのような既存の実装に追加することができます:あなたが書いたときに

FBSDKLoginManager().logInWithReadPermissions(["public_profile", "others"], 
          fromViewController:self //<=== new addition, self is the view controller where you're calling this method. 
          handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in 
}) 

最新のXcodeは、すべての利用可能なオプションとlogInWithReadPermissions、あなたを提案すべきです。

+1

初心者として理解しやすいように、スピーディーな例が私にとって完璧です。 –

+0

私の編集を見て、私はswiftのための簡単なコードを追加しました。 –

+0

@AdilSoomroユーザーが再度ログインする必要があるかどうかを判断するために、自分のトークンが有効かどうかを確認しました。あなたは何かを持っていますか?これは私のコードに使用されていました: "if([FBSession activeSession] .state == FBSessionStateOpen)" – Felipe

関連する問題