为什么FBSDKAccessToken.currentAccessToken()在我的设备上返回nil但在iOS模拟器中工作正常?

时间:2015-10-25 05:18:16

标签: ios facebook swift

在我的IOS9应用程序中,我使用Facebook SDK 4.7.0 graph api来搜索公共场所。

我在我的应用委托中使用FBSDKApplicationDelegate,我相信它为我提供了有效的应用访问令牌(因为我不会使用任何用户特定数据,因此应用程序登录对我来说已足够)。

当我在我的ViewController中调用FBSDKAccessToken.currentAccessToken()来检查令牌是否有效时,我总是在模拟器中成功,但在真实设备上部署时却没有。

有什么建议吗?

我已按照新的ios9指南进行操作,并在我的plist中提供了其他信息。 由于我的应用程序仍在开发中,我的Facebook伴侣应用程序(其中包含我的应用程序ID和密码)仍然无法供一般公众使用。这可能是个问题吗?

1 个答案:

答案 0 :(得分:0)

用于检查facebook权限..&给予许可......如果存在权限,则自动获取其他明智的访问请求登录...

对于Swift

 var login: FBSDKLoginManager = FBSDKLoginManager()
login.logInWithReadPermissions(["public_profile", "email"], handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in

  if (error != nil)
  {
        //Process error
   }
   else if result.isCancelled
   {
        //Handle cancellations
   }
  else
  {
        // If you ask for multiple permissions at once, you
        // should check if specific permissions missing
        if result.grantedPermissions.contains("email"){
            //Do work
   }
     }
   })

目标c:

检查这样的权限。以下代码使用..

if ([[FBSDKAccessToken currentAccessToken]hasGranted:@"email"])
   {
      // add your coding here after login call this block automatically.
   }
   else
   {

//login code  **//if accesstoken expired...then call this block**

FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];

[loginManager logInWithReadPermissions:@[@"public_profile", @"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)




  }];

   }