1

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

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

[SHKFacebook logout];
[SHKTwitter logout];

或者我用过

[SHK logoutOfAll];

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

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

谢谢。裴。

4

3 回答 3

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.and 的所有 cookie。注销将起作用。

于 2012-07-06T08:39:49.323 回答
0

在 ShareKit 2.0 中,您必须通过 facebook 页面注销,因为它适用于单次登录。这意味着您只有一次登录,并且在您从 iphone 的 facebook 页面注销之前一直保持登录状态。

于 2012-05-24T04:10:05.233 回答
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 时,它只使用注册帐户,用户可以从列表中选择他们的帐户。

这些问题还有其他解决方案吗?我想知道他们,如果有的话。

谢谢你和大家。裴。

于 2012-05-24T15:52:27.797 回答