4

问题

在我的 iOS 应用中,用户通过 UIWebView 使用 Facebook 登录。有时,Facebook 会显示“未登录”消息,而不是登录页面:

在此处输入图像描述

我每次都可以用几行代码重现这个问题:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
    UIWebView* web = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];
    [self.window addSubview:web];
    NSString* url = @"https://m.facebook.com/dialog/oauth?client_id=9999999999999999&redirect_uri=https%3A%2F%2Fmysite.com%2FApp%2FFacebookLogin%2FCallback&response_type=code&scope=read_stream%2Cuser_about_me%2Coffline_access%2Cpublish_actions%2Cpublish_stream%2Cemail";        
    [web loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
}

我试过的

如果我在移动 safari 中打开相同的 URL,[[UIApplication sharedApplication] openUrl:...]那么它就可以工作。它显示了一个没有问题的登录页面。

如果我将范围更改为“电子邮件”,那么它可以在 Web 视图中正常工作。如果我通过添加一个项目来更改它,那么它仍然会中断。

我已尝试清除 UIWebView 的 cookie缓存,并且已删除该应用程序并重新安装它以尝试清除所有内容。这些都不起作用。

&state=abcd如果我通过添加强制浏览器重新加载请求来更改 url ,它仍然会中断。这没有效果。

如果我使用域www.facebook.com而不是m.facebook.com那么它可以工作。

如果我登录shouldstartloadwithrequestUIWebView,它会显示 url 加载然后再次加载。换句话说,facebook 似乎正在重定向到它自己。

此外,我已经向 Facebook ( https://developers.facebook.com/bugs/452609994811240 ) 提交了一个错误,他们已将其移至“中等”,因此这可能只是他们系统上的错误。

知道如何在不弄乱范围的情况下显示登录页面吗?

4

0 回答 0