iOS Facebook SDK 4.x读取和发布权限冗余登录

时间:2016-06-27 23:45:23

标签: facebook-ios-sdk

我正在将Facebook sdk从3.x升级到4.x并且Facebook文档清楚地表明需要单独请求读取权限和发布权限。当应用程序请求读取权限时,用户登录并授予权限,但是当应用程序请求发布权限时,即使用户已经拥有访问令牌,它也会使用户再次登录?有没有办法只是请求权限而不必强迫用户再次登录?

Facebook android sdk允许这样做而无需登录两次,但iOS似乎完全阻止了这种行为,这似乎很疯狂。如果应用程序实现需要集成的读取和发布权限才能工作,那么强制用户登录两次只会产生不必要的摩擦和糟糕的用户体验。

1 个答案:

答案 0 :(得分:0)

我已经浏览了名为FBSDKInternalUtility.h,的SDK类,其中我们有一个方法

+ (BOOL)areAllPermissionsReadPermissions:(NSSet *)permissions
{
  for (NSString *permission in permissions) {
    if ([[self class] isPublishPermission:permission]) {
      return NO;
    }
  }
 return YES;
}

+ (BOOL)isPublishPermission:(NSString *)permission
{
 return [permission hasPrefix:@"publish"] ||
 [permission hasPrefix:@"manage"] ||
 [permission isEqualToString:@"ads_management"] ||
 [permission isEqualToString:@"create_event"] ||
 [permission isEqualToString:@"rsvp_event"];
}

他们在两种情况下检查以下权限,虽然通过NSSet命令的权限变得不同,所以下面检查第一个字符串并返回NO。那么我做了什么评论如下所述。

+ (BOOL)areAllPermissionsReadPermissions:(NSSet *)permissions
{
  //for (NSString *permission in permissions) {
   // if ([[self class] isPublishPermission:permission]) {
    //  return NO;
    // }
  //}
 return YES;
}

我不确定我所做的改变是否有效,但我可以实现我想要的。很高兴。 如果您有任何改变建议,请告诉我。