gpt4 book ai didi

iphone - 连接到 Windows Live Messenger 网络时出现不可能的问题

转载 作者:行者123 更新时间:2023-12-03 16:44:41 24 4
gpt4 key购买 nike

这个问题让我很头疼,我不知道这是怎么回事。如果您没有任何使用 Windows Live 网络的经验,我还是请您阅读本文,也许它与 Windows Live 网络无关,我是否忽略了一些完全不相关的东西。

简而言之:我编写了一个 Objective-C 类,它允许我连接到 Windows Live Messenger 网络,称为 WLNotificationSession。我的工作非常简单,我设置用户名密码变量并执行[notificationSession start];。然后就成功登录了。

假设我有两个 Windows Live 帐户。第一个 A 现已登录。

当我尝试使用另一个 Windows Live 帐户 B 启动第二个 WLNotificationSession 时,问题就出现了。它总是失败。用户名和密码100%正确。当我尝试先登录B时,成功了。当我在 B 登录时尝试 A 时,它会失败。 第二次登录 session 总是失败。

不可能是“短时间内尝试登录次数过多”之类的情况。当我登录 A 时,退出应用程序,重新启动应用程序并再次登录 A,两次尝试都成功。我可以在 20 秒内完成此操作。但是,当我启动应用程序、登录 A、断开 A 的连接、等待 2 小时、登录 B(所有这些都没有关闭应用程序)时,失败了。 (?)

对于那些有 WL 网络经验的人来说:故障发生在 Tweener 身份验证期间。从登录服务器获取“Authentication-Info”或“WWW-Authenticate”HTTP header 的部分。当失败时,我得到这个值:"Www-Authenticate"= "Passport1.4 da-status=failed-noretry,srealm=Passport.NET,ts=-2,prompt,cburl=http://messenger.msn.com/images/logo102x88。 gif,cbtxt=.NET%20Messenger%20Service";

我真的希望有人能帮忙解决这个问题。谢谢。

更新这是一些示例代码。我创建一个新项目,在 applicationDidFinishLaunching 方法中添加此代码,然后单击“构建并运行”:

WLNotificationSession *notificationSession1 = [[WLNotificationSession alloc] init];

notificationSession1.username = @"testaccount1@hotmail.com";

notificationSession1.password = @"testpwd";

[notificationSession1开始];

WLNotificationSession *notificationSession2 = [[WLNotificationSession alloc] init];

notificationSession2.username = @"testaccount2@hotmail.com";

notificationSession2.password = @"testpwd";

[notificationSession2开始];

notificationSession1 总是成功,notificationSession2 总是失败。没有全局变量或共享变量。

更新2

根据 David 的建议,问题可能与 cookie 相关,我将此代码添加到我的项目中:[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];

我还在下面的评论中使用他的方法来删除每个 URL 请求之前和之后的任何 cookie。这可能是不必要的,但我还是这么做了。

我认为此时可以安全地假设它不是 cookie,或者必须有其他地方存储 cookie。

最佳答案

No global variables, or shared variables whatsoever

然后,由于使用http请求进行身份验证,这可能是cookie问题。可能有一些 session cookie 提醒服务器有关前一个 session 的信息。

我知道 FBConnect(iPhone 版 Facebook API)在注销时使用以下方法来删除任何 cookie:

- (void)deleteFacebookCookies {
NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]];
for (NSHTTPCookie* cookie in facebookCookies) {
[cookies deleteCookie:cookie];
}
}

你可以尝试这个(将 Facebook 网址替换为你的网址)。您甚至可以添加一些 NSLog 来监视这些 cookie。

关于iphone - 连接到 Windows Live Messenger 网络时出现不可能的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3763161/

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