我在我的应用程序中实现了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”,但它们都没有给我任何关于如何识别它是来自登录还是共享的线索。
有关于此的任何线索吗?
答案 0 :(得分:1)
我遇到了同样的问题,这就是如何修复它:
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的性能,因为用户无需再次登录。祝你好运!
答案 1 :(得分:0)
如果在使用sharekit时添加facebookLocalAppId,则会出现问题。我猜它主要是Facebook SDK的问题。
确保localAppId为空字符串,并在info.plist的url方案中添加fb [AppId]。
它应该工作。为我工作!
https://developers.facebook.com/bugs/314394491907164?browse=search_4efdea61cc7cd8f83499042
希望这有帮助!