Sharekit и вход в Facebook конфликтуют - PullRequest
1 голос
/ 29 марта 2012

В моем приложении реализован sharekit, и он работал нормально, пока я не реализовал вход через Facebook в другом представлении.

Sharekit просит меня добавить в делегат приложения следующее:

- (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;
}

Дело в том, что api для входа в Facebook просит вас добавить следующий код также в 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 голос
/ 08 августа 2012

Я столкнулся с той же проблемой, и вот как это исправить:

  • Найдите свой 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, поскольку пользователю не нужно снова входить в систему. Удачи!

0 голосов
/ 27 июня 2012

Существует некоторая проблема, если вы добавляете facebookLocalAppId при использовании sharekit. Я думаю, что это проблема Facebook SDK в основном.

Убедитесь, что localAppId является пустой строкой, и добавьте fb [AppId] в схемы URL вашего info.plist.

Это должно работать. Работал на меня!

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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...