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]]];
}

私が試したこと

を使用してモバイルサファリで同じ URL を開くと、[[UIApplication sharedApplication] openUrl:...]機能します。問題なくログインページが表示されます。

スコープを「メール」に変更すると、Web ビューで問題なく動作します。アイテムを追加して変更すると、それでも壊れます。

UIWebViewの Cookieキャッシュをクリアしようとしましたが、アプリを削除して再インストールし、すべてをクリアしようとしました。どれもうまくいきません。

ブラウザにリクエストを強制的にリロードさせるために追加してURLを変更し&state=abcdても、それでも壊れます。これは効果がありません。

www.facebook.com代わりにドメインを使用するm.facebook.comと機能します。

UIWebViewにログオンshouldstartloadwithrequestすると、URL が読み込まれ、再度読み込まれることが示されます。つまり、facebook は自分自身にリダイレクトしているようです。

また、Facebook ( https://developers.facebook.com/bugs/4526099994811240 ) にバグを報告し、「中」に移動したため、システムのバグである可能性があります。

スコープをいじらずにログインページを表示する方法はありますか?

4

0 に答える 0