ShareKit Facebook/Twitter 注销无法完全正常工作



这是一个迫切需要回答的问题。我正在开发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和大家。裴。

最新更新