ShareKit Facebook / Twitter注销不完全正常

时间:2012-05-24 02:35:27

标签: iphone facebook twitter

这是一个迫切需要快速回答的问题。 我正在开发iPhone应用程序以将图像分享到社交网络。 我正在使用ShareKit 2.0库来实现共享功能。 我可以使用这个完美地实现共享功能,我建议使用ShareKit库在您的应用程序上实现共享。

问题仅出在Facebook / Twitter注销上。 当我想从他们注销时,我使用了以下代码。

[SHKFacebook logout];
[SHKTwitter logout];

或者我用过

[SHK logoutOfAll];

但是我无法从他们那里完全退出,当我尝试与他们分享图片时,他们说“你正在以XXX登录这个应用程序”并且只是要求确认这一点。 而当我从iPhone / iPad上移除应用程序时,他们需要再次登录邮件地址和密码。

我认为这对经验丰富且才华横溢的开发者来说不是一个大问题。 请帮我。 我在等你的建议。

感谢。 培。

3 个答案:

答案 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和所有人。 培。