这是一个迫切需要回答的问题。我正在开发iPhone应用程序以将图像共享到社交网络。我正在使用 ShareKit 2.0 库来实现共享功能。我可以使用它完美地实现共享功能,我建议使用 ShareKit 库在您的应用程序上实现共享。
问题仅在Facebook/Twitter注销时。当我想退出它们时,我使用了如下代码。
[SHKFacebook logout];
[SHKTwitter logout];
或者我用过
[SHK logoutOfAll];
但是我无法完全退出他们,当我尝试将图像分享给他们时,他们说"您正在以XXX身份登录此应用程序",并且只要求确认这一点。而当我从iPhone/iPad中删除该应用程序时,他们需要邮件地址和密码才能再次登录。
我认为对于经验丰富且才华横溢的开发人员来说,这不是一个大问题。请帮助我。我在等待你的建议。
谢谢。裴。
facebook 无法注销,因为 Facebook 的所有 cookie 都不会在注销方法中删除。
在 facebook.m 文件中更改无效会话方法,如下所示:
- (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,并且注销将起作用。
在 ShareKit 2.0 中,您必须通过访问 facebook 页面注销,因为它适用于单次登录。这意味着您只能登录一次,并且它会保持登录状态,直到您从iPhone中的Facebook页面注销为止。
经过努力研究,我找到了解决方案。问题出在 ShareKit 库的 Facebook.m 的授权方法上。
- (void)authorize:(NSArray *)permissions {
self.permissions = permissions;
[self authorizeWithFBAppAuth:YES safariAuth:NO];
}
以上意味着将授权Facebook不使用Safari。当用户从Facebook注销时,它不会完全删除Safari的cookie。因此,使其不使用Safari身份验证方法。这导致Facebook登录是在应用程序本身而不是野生动物园。
关于Twitter,ShareKit 2.0使用iOS标准的Twitter框架从Twitter登录/注销。用户可以使用他们在iPhone的"设置"应用程序上的帐户登录Twitter。当用户在其应用上连接到 Twitter 时,它仅使用注册帐户,用户可以从列表中选择其帐户。
这些问题还有其他解决方案吗?我想知道他们,如果有的话。
谢谢SO和大家。裴。