iOS Facebook SDK: An active access token must be used to query information about the current user

前端 未结 5 2169
温柔的废话
温柔的废话 2020-12-30 06:01

I have followed many examples and looked at many questions regarding this access token error, but I can\'t seem to find out why I am getting it or how to fix it.

I i

相关标签:
5条回答
  • 2020-12-30 06:34

    According to the docs, https://developers.facebook.com/docs/reference/ios/3.1/class/FBRequestConnection

    "The request uses the active session represented by [FBSession activeSession]."

    This applies to the static methods dealing with requests. So what you want to do is make sure you set the active session. Do the following:

    [FBSession setActiveSession:self.fb];
    

    Just before you call the first FBRequestConnection start* method.

    0 讨论(0)
  • 2020-12-30 06:34

    I got this error in v4 of the SDK when attempting to use a FBSDKGraphRequest object that had been created before logging in. When I changed this to create the FBSDKGraphRequest immediately before using it (i.e. after having logged in) it worked fine. It seems the initializer for this class sets some token that isn't refreshed when the request is started.

    I tried updating the request's tokenString property after logging in, but for some reason this is a readonly property.

    0 讨论(0)
  • 2020-12-30 06:34

    /* deprecated for google and facebook func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: AnyObject) -> Bool { let googleDidHandle = GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation)

        let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(
            application,
    

    open: url, sourceApplication: sourceApplication, annotation: annotation) print(facebookDidHandle) return googleDidHandle || facebookDidHandle } */

    So i used, func application(_ application: UIApplication, open url: URL, options: [String: AnyObject]) -> Bool {

        return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: options) || GIDSignIn.sharedInstance().handle(url as URL!, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
    }
    

    xcode 8 beta 3 , ios 10

    0 讨论(0)
  • 2020-12-30 06:37

    Well After some time, noticing that FBSession.activeSession was not nil, what I was missing before sending the request was:

        if (!FBSession.activeSession.isOpen) {
            [FBSession openActiveSessionWithAllowLoginUI: YES];
        }
    
    0 讨论(0)
  • 2020-12-30 06:49

    you can try this too, works for me

    func application(_ application: UIApplication,
                          open url: URL, 
                           options: [String: AnyObject]) -> Bool
    {
        let delegate = FBSDKApplicationDelegate.sharedInstance()
    
        return delegate.application(application, open: url, 
                                    sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String, 
                                           annotation: options["UIApplicationOpenURLOptionsAnnotationKey"])
    }
    
    0 讨论(0)
提交回复
热议问题