私のアプリでは、ユーザーが Facebook でログインできる UIWebView に Web ページをロードする必要があります。問題は、ユーザーがログインをクリックすると、空白のページが表示されることです。
最初のページに戻ってログインすることはできますか?
Web ページは Safari で完全に機能し、新しいウィンドウを開き、ログイン後に閉じて元の場所に戻ります。
編集: 間違った URL が UIWebView に提供されました
私のアプリでは、ユーザーが Facebook でログインできる UIWebView に Web ページをロードする必要があります。問題は、ユーザーがログインをクリックすると、空白のページが表示されることです。
最初のページに戻ってログインすることはできますか?
Web ページは Safari で完全に機能し、新しいウィンドウを開き、ログイン後に閉じて元の場所に戻ります。
編集: 間違った URL が UIWebView に提供されました
facebook SDK for iOS のサンプルは、あなたが望む方法でログインすると思います。リンクを参照してください: facebook-iOS-SDK-sample: https://github.com/facebook/facebook-ios-sdk/tree/master/sample/Hackbook
/**
* Show the authorization dialog.
*/
- (void)login {
HackbookAppDelegate *delegate = (HackbookAppDelegate *)[[UIApplication sharedApplication] delegate];
if (![[delegate facebook] isSessionValid]) {
[[delegate facebook] authorize:permissions];
} else {
[self showLoggedIn];
}
}
ログインボタンをクリックすると、ログインダイアログが開き、許可を求められます。これは次のようになります: https://developers.facebook.com/docs/mobile/screenshots/ios/#iphone-native
「facebook 関連」アプリを実装する最善の方法は、Hacbook から始めることだと思います。それは本当に素敵で詳細なサンプルです。
Facebook のログイン ポップアップが閉じられた後に特定の URL をリロードして、空白のページでスタックしないようにする場合は、このコードを使用できます。
最初に UIWebViewDelegate をインクルードし、デリゲートをコードのどこかに設定します。
[yourwebView setDelegate:self];
次に、shouldStartLoadWithRequest メソッドを使用して、Facebook がポップアップを閉じるために使用する close_popup.php のリクエスト URL を確認します。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = [NSString stringWithFormat:@"%@", request];
if ([urlString rangeOfString:@"close_popup.php"].location == NSNotFound) {
//The close_pop.php is not found. (Do nothing)
} else {
//Facebook closed the popup so we should load the page we now want the user to see.
NSURL*url=[NSURL URLWithString:@"http://www.example.ca/thepageyouwanttoreload.html"];
NSURLRequest*request=[NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
return YES;
}
SSLの問題?Joanne によると、Facebook SDK を使用すると、Facebook ネイティブ アプリがインストールされている場合は、それを介してログインするなど、多くの追加機能を無料で利用できます。