首页 文章

Sharekit和facebook登录冲突

提问于
浏览
1

我在我的应用程序中实现了sharekit,它工作正常,直到我在另一个视图中使用facebook实现登录 .

sharekit要求我在app delegate上添加以下内容:

- (BOOL)handleOpenURL:(NSURL*)url
{
    NSString* scheme = [url scheme];
    NSString* prefix = [NSString stringWithFormat:@"fb%@", SHKCONFIG(facebookAppId)];
    if ([scheme hasPrefix:prefix])
        return [SHKFacebook handleOpenURL:url];
    return YES;
}

问题是facebook登录api要求你在appdelegate上添加以下代码:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{
    return [SHKFacebook handleOpenURL:url];
}

现在,当我尝试在Facebook上分享内容时,它会要求获得许可,然后没有任何反应,因为它进入了第二种方法 .

我试图跟踪这个实例变量“application”,“sourceApplication”,“url”和“annotation”,但它们都没有给我任何关于如何识别它是来自登录还是共享的线索 .

有什么线索吗?

2 回答

  • 1

    如果在使用sharekit时添加facebookLocalAppId,则会出现问题 . 我猜它主要是Facebook SDK的问题 .

    确保localAppId为空字符串,并在info.plist的url方案中添加fb [AppId] .

    它应该工作 . 为我工作!

    https://developers.facebook.com/bugs/314394491907164?browse=search_4efdea61cc7cd8f83499042

    希望这可以帮助!

  • 0

    我遇到了同样的问题,这是如何解决它:

    • 找到您的 SHKFacebook.m 文件

    • 找到以下功能:

    (Facebook*)facebook 
    {
      static Facebook *facebook=nil;
      @synchronized([SHKFacebook class]) {
        if (! facebook)
          facebook = [[Facebook alloc] initWithAppId:SHKCONFIG(facebookAppId)         urlSchemeSuffix:SHKCONFIG(facebookLocalAppId) andDelegate:nil];
    
      }
      return facebook;
    }
    

    这段代码必须像这样得到facebook实例(这就是我做的方式):

    + (Facebook*)facebook 
    {
      static Facebook *facebook=nil;
      @synchronized([SHKFacebook class]) {
        if (! facebook)
    
        //Used for overwriting the SHKFacebook instance
          facebook = [[FacebookManager sharedManager]facebook];
      }
      return facebook;
    }
    

    这应该可以解决您的所有问题,甚至可以提高Sharekit的性能,因为用户无需再次登录 . 祝好运!

相关问题