在我的应用中,我需要向用户展示Facebook AppRequest对话框。我这样做是这样的:
NSMutableDictionary* params =
[NSMutableDictionary dictionaryWithObject:friendId forKey:@"to"];
[FBWebDialogs presentRequestsDialogModallyWithSession:FBSession.activeSession
message:NSLocalizedString(@"AppRequestMessage", "")
title:NSLocalizedString(@"AppRequestTitle", "")
parameters:params
handler:^(FBWebDialogResult result, NSURL *url, NSError *error){
if (result == FBWebDialogResultDialogNotCompleted)
{
if (error)
[FRBaseViewController showAlertWithTitle:NSLocalizedString(@"AppRequestFail", "") message:error.localizedDescription];
}
else
{
if ([url.description rangeOfString:@"error"].location == NSNotFound)
{
if ([FRDataModel sharedInstance].shouldChallenge)
[[FRDataModel sharedInstance] finishedRatingFriend];
}
}
FRAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
FRNavigationController *navController = (FRNavigationController *)delegate.navigationController;
[(FRNavigationController *)navController pseudoPopToFrindViewController];
}];
而且大部分时间都可以正常工作。但是有时,自用户登录到应用程序以来经过很长时间后,它不会显示AppRequest对话框,而是显示Login对话框。用户注销并再次登录后,便可以再次正常工作。我认为在某个时候,Facebook SDK开始认为用户尚未登录(尽管用户确实已登录)或类似的东西。你见过这样的行为吗?你能给我建议一下吗?谢谢
最终我找到了解决方案。出现这种情况的原因是,缺少一些正确的Facebook工作所需的cookie。我不知道为什么有时候它们会消失,NSHTTPCookieStorage
但仅知道它们确实对我有很大帮助。我所做的是为Cookie提供了另一个存储空间。现在,每次更新cookie时,我都会更新存储。然后,我检查是否[NSHTTPCookieStorage sharedHTTPCookieStorage]
包含所需的cookie(它们的名称为c_user
和xs
)。如果没有,我将从存储中取出这些cookie并将其添加到中[NSHTTPCookieStorage sharedHTTPCookieStorage]
。而且有效!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句