在我的 IOS9 应用程序中,我使用 Facebook SDK 4.7.0 图形 API 来搜索公共(public)场所。
我在应用程序委托(delegate)中使用 FBSDKApplicationDelegate,我相信它为我提供了有效的应用程序访问 token (因为我不使用任何用户特定数据,应用程序登录对我来说就足够了)。
当我在 ViewController 中调用 FBSDKAccessToken.currentAccessToken() 来检查 token 是否有效时,我总是在模拟器中成功,但在部署到真实设备上时却失败了。
有什么建议吗?
我已遵循新的 ios9 指南,并在我的 plist 中提供了附加信息。 由于我的应用程序仍在开发中,我的 Facebook 配套应用程序(保存了我的应用程序 ID 和 secret )仍然无法向公众开放。这会是一个问题吗?
最佳答案
用于检查 facebook 权限..& 授予权限...如果权限存在则自动获取 accesstoken,否则要求登录...
对于 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
}
}
})
对于 objective-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)
}];
}
关于ios - 为什么 FBSDKAccessToken.currentAccessToken() 在我的设备上返回 nil,但在 iOS 模拟器中工作正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33326462/