2017-05-04 492 views
0
Error Domain=com.facebook.sdk.core Code=8 "(null)" UserInfo={NSRecoveryAttempter=<_FBSDKLoginRecoveryAttempter: 0x1740070c0>, com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode=190, NSLocalizedRecoverySuggestion=Please log into this app again to reconnect your Facebook account., com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Invalid OAuth access token., com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey=400, com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey=2, NSLocalizedRecoveryOptions=(
    OK, 
    Cancel 
), com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey={ 
    body =  { 
     error =   { 
      code = 190; 
      "fbtrace_id" = AJq7xJsKJNv; 
      message = "Invalid OAuth access token."; 
      type = OAuthException; 
     }; 
    }; 
    code = 400; 
}}) 

我正面臨着上面的書面錯誤。我的應用程序包含兩個登錄方案:1. Facebook登錄(不工作)2.谷歌加登錄(工作正常)Facebook登錄無效,錯誤:Oauth訪問令牌無效。它總是沒有

在Facebook登錄的情況下:屏幕開放,我給權限的應用程序 然後它顯示空白的Facebook頁面,只需在頂部添加DONE按鈕。按完成按鈕後,我收到上述錯誤。

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

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

    GIDSignIn.sharedInstance().delegate = self 
    return true 
} 

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

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { 
    let googleDidHandle = GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation) 

    let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation) 

    return googleDidHandle || facebookDidHandle 
} 

@available(iOS 9.0, *) 
func application(_ application: UIApplication, 
       open url: URL, options: [UIApplicationOpenURLOptionsKey: Any]) -> Bool { 
    return GIDSignIn.sharedInstance().handle(url, 
              sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, 
              annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 
} 

視圖控制器代碼:

 import FBSDKShareKit 
     import FBSDKCoreKit 
     import FBSDKLoginKit 

@IBOutlet weak var buttonOutletFacebook: FBSDKLoginButton! 
    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     configureFacebook() 
    } 
    //MARK:- FaceBook Integrated Functions 
    func application(_ application: UIApplication, openURL url: URL, sourceApplication: String?, annotation: AnyObject) -> Bool { 
     return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation) 
    } 

    func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) 
    { 

    FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"first_name, last_name, picture.type(large), email"], tokenString: "fb_token", version: nil, httpMethod: "GET").start { (connection, result, error) -> Void in 

    if error != nil{ 
    print(error) 
    return 
    }else{ 
    print(result) 
    } 

    func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!){ 
     let loginManager: FBSDKLoginManager = FBSDKLoginManager() 
     loginManager.logOut() 
    } 

    func loginButtonWillLogin(_ loginButton: FBSDKLoginButton!) -> Bool { 
     return true 
    } 

    func configureFacebook() 
    { 
     buttonOutletFacebook.readPermissions = ["public_profile", "email"]; 
     buttonOutletFacebook.delegate = self 
     print(buttonOutletFacebook.readPermissions) 
    } 

回答

0

你需要如下管理網址scheam:

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { 

    if(url.scheme!.isEqual("fb1212212121223")) { 

    return FBSDKApplicationDelegate.sharedInstance().application(
      application, 
      openURL: url, 
      sourceApplication: sourceApplication, 
      annotation: annotation) 

    } else { 

     return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation) 

    } 

}

+0

仍然沒有工作,沒有與FB的的accessToken問題 –