2016-08-14 2 views
0

ユーザーがFacebook経由でログインできるようにしてユーザーの情報を取得しようとしていました。私は情報を取得しようとしましたが、代わりにnull値を返します。何か間違っているのですか?私は作成したカスタムログインボタンを使用します。以下は私の現在のコードです。私は「情報がありません」と表示します。以下はFacebookにログインしているときにnull値を取得すると、ユーザーIDの電子メールIDを取得する3

@IBAction func fbLogin(_ sender: AnyObject) { 

    let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager() 
    fbLoginManager.logIn(withReadPermissions: ["email"], from: self) { (result, error) -> Void in 
     if (error == nil){ 
      let fbloginresult : FBSDKLoginManagerLoginResult = result! 
      if fbloginresult.grantedPermissions != nil { 
      if(fbloginresult.grantedPermissions.contains("email")) 
      { 
       self.getFBUserData() 
      } 
      }else { 
       print("No information available")  
      } 

     } 
    } 

} 

FB

クラスAppDelegateのための私のAppdelegate.swiftコードです:私は最終的だったUIResponder、UIApplicationDelegate {

var window: UIWindow? 


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 
    } 

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool { 

    return FBSDKApplicationDelegate.sharedInstance().application(application, open: url as URL!, sourceApplication: sourceApplication, annotation: annotation) 

}

func applicationDidBecomeActive(_ application: UIApplication) { 
    FBSDKAppEvents.activateApp() 
} 

}

+0

あなたが提供したコードに問題はないようです。 Facebookデベロッパーのウェブサイトにあるあなたの「Facebookアプリ」が正しく設定されていることを確認できますか? 「Bundle ID」はそれが機能するためには一致する必要があります。 –

+0

こんにちはホアン、はい。私はそれを確認した。問題は、権限を要求するSafariビューを開き、OKをクリックすると何もせずにSafariビューにとどまります。私は完了をクリックすると、それは私がそれをキャンセルしたと考え、null値を返します。あなたはそれがなぜアプリケーションにリダイレクトされないのか知っていますか?私はxcode 8 beta 5を使用しています。私もこのリンクの修正を試みた - http://stackoverflow.com/questions/37903652/facebook-login-notgoing-back-to-app-when-migrated-to-swift-3?rq=1しかしそれdidnt仕事。 –

+0

'Info.plist'ファイルを共有できますか?私はそれを見ることができるようにGitHub Gistに置くことができます。 –

答えて

0

できるそれを働かせる。私は

FUNCアプリケーション(?:のUIApplication、のOpenURL URL:NSURL、sourceApplication:文字列?,注釈:アプリケーションANYOBJECT)以下の機能を交換しなければならなかった - 。>ブール{

リターンFBSDKApplicationDelegate.sharedInstance()アプリケーション(アプリケーション、オープン:

func application(_ app: UIApplication, open url: URL, options: [String : AnyObject] = [:]) -> Bool { 
    return FBSDKApplicationDelegate.sharedInstance().application(app,open: url,sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String,annotation: options [UIApplicationOpenURLOptionsAnnotationKey]) 
} 
と注釈)

}

:sourceApplication、注釈:URL !, sourceApplicationとしてURL私はそれを変更したら

が、私は以下のエラーを得た -

オプション(エラードメイン= com.facebook.sdk.loginコード= 308「(ヌル)」)

それは、キーチェーンの問題のように見え、リンゴはios10で働く方法を変えました。私はリンクを参照しました - https://stackoverflow.com/a/38799196/6652247そしてそれは働いた。私は今、ユーザー情報を取得することができました。

ありがとうHoang Tran ..

関連する問題