gpt4 book ai didi

ios - Facebook iOS SDK 不存储用于访问的 cookie

转载 作者:行者123 更新时间:2023-12-01 17:18:54 25 4
gpt4 key购买 nike

这是一个非常奇怪的错误。登录时,facebook 对象不会在设备上的 safari 上存储任何 cookie,但它会在模拟器上存储。我怎么知道?

NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
NSString* domainName = [cookie domain];
NSLog(domainName);
NSRange domainRange = [domainName rangeOfString:@"facebook"];
if(domainRange.length > 0)
{
[storage deleteCookie:cookie];
}
}

在模拟器上运行时,我可以看到两个 cookie 的名称。我在设备上得到零。即使使用 facebook 的 DemoApp 也会发生这种情况。
我不知道这是从哪里来的,所以我真的不知道我可以提供什么信息以使帖子更加完整。请向我索取我现在缺少的任何东西。代码只是来自 DemoApp,我没有更改/添加/删除任何内容。

谢谢。

最佳答案

你可能在 iOS 库中遇到了一件奇怪的事情。

请记住,每个 iOS 应用程序都有单独的存储空间 - 它们以这种方式保存,以便另一个应用程序无法触及不属于它的东西。此沙盒可防止恶意或制作不良的应用程序伤害自身以外的任何事物。

iPhone 上的 Safari 也是如此 - 为 Safari 中的 session 设置的 cookie 对您的应用程序不可用。在您的应用程序的 UIWebView 中设置的 Cookie 对 Safari 不可用。对此有些困惑,因为在桌面 OSX 系统上,您可以共享 cookie。你不能在 iOS 上这样做,尽管类方法的名称很诱人,SharedHTTPCookieStorage。

Facebook SDK 身份验证代码最多可以尝试三种方式在设备上进行身份验证......它可以调用 Facebook 应用程序,并要求通过它进行身份验证,从而允许该应用程序的用户只登录一次。如果未安装 FB 应用程序,它会在移动 safari 浏览器中打开一个窗口并尝试登录,如果可以的话,在浏览器的沙箱中设置 cookie。如果两者都无法打开,它会在您的应用程序空间中打开一个 UIWebView 并将其 cookie 存储到您的应用程序本地。

我猜想身份验证发生在模拟器和 iPhone 的不同位置,因此 cookie 存在于其他地方。

真正令人沮丧的是,如果您使用了不错的单点登录功能,那么您无法在您的应用程序中打开 UIWebviews 到 Facebook,而无需强制进行第二次登录。您无法使用 Cookie。

关于ios - Facebook iOS SDK 不存储用于访问的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6964721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com