这是一个迫切需要快速回答的问题。 我正在开发iPhone应用程序以将图像分享到社交网络。 我正在使用ShareKit 2.0库来实现共享功能。 我可以使用这个完美地实现共享功能,我建议使用ShareKit库在您的应用程序上实现共享。
问题仅出在Facebook / Twitter注销上。 当我想从他们注销时,我使用了以下代码。
[SHKFacebook logout];
[SHKTwitter logout];
或者我用过
[SHK logoutOfAll];
但是我无法从他们那里完全退出,当我尝试与他们分享图片时,他们说“你正在以XXX登录这个应用程序”并且只是要求确认这一点。 而当我从iPhone / iPad上移除应用程序时,他们需要再次登录邮件地址和密码。
我认为这对经验丰富且才华横溢的开发者来说不是一个大问题。 请帮我。 我在等你的建议。
感谢。 培。
答案 0 :(得分:2)
facebook无法注销,因为在注销方法中不会删除facebook的所有Cookie。
在facebook.m文件中对invalidateSession方法进行更改,如下所示:
- (void)invalidateSession {
self.accessToken = nil;
self.expirationDate = nil;
NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie* cookie in cookies.cookies){
if([cookie.domain rangeOfString:@"facebook"].location != NSNotFound){
[cookies deleteCookie:cookie];
}
}
// setting to nil also terminates any active request for whitelist
[_frictionlessRequestSettings updateRecipientCacheWithRecipients:nil];
}
它将删除facebook的所有cookie。注销将起作用。
答案 1 :(得分:0)
在ShareKit 2.0中,您必须通过访问Facebook页面注销,因为它适用于单次登录。这意味着您只登录了一次,直到您从iphone的facebook页面退出时它才会保持登录状态。
答案 2 :(得分:0)
我经过艰苦的研究后找到了解决方法。 问题在于ShareKit库的Facebook.m的授权方法。
- (void)authorize:(NSArray *)permissions {
self.permissions = permissions;
[self authorizeWithFBAppAuth:YES safariAuth:NO];
}
上述意味着将授权Facebook不使用Safari。 当用户从Facebook注销时,它不会完全删除Safari的cookie。 这使得它不使用Safari身份验证方法。 这导致Facebook登录应用程序本身而不是Safari。
关于twitter,ShareKit 2.0使用iOS标准Twitter框架从Twitter登录/退出。 用户可以使用iPhone的“设置”应用程序上的帐户登录Twitter。 当用户在他们的应用程序上连接到Twitter时,它仅使用注册帐户,用户可以从列表中选择他们的帐户。
这些问题还有其他解决方案吗? 我想知道它们,如果有的话。
感谢SO和所有人。 培。