Я пытаюсь использовать Facebook Connect с iPhone webapp, поэтому он будет похож на то, как он выглядит в родном приложении для iPhone, которое использует iPhone Connect iPhone для iPhone.
iPhone SDK получает приятную страницу входа, посещая:
http://www.facebook.com/login.php?fbconnect=1&connect_display=touch&api_key=<key>&next=fbconnect://success
(см. http://github.com/facebook/facebook-iphone-sdk/blob/master/src/FBLoginDialog.m)
Так как я не хочу, чтобы Safari открывался, единственный способ показать эту страницу - использовать iframe.
Тогда возникает проблема обнаружения успеха и сбоя.
SDK может сделать это, просто используя метод делегата webView:shouldStartLoadWithRequest:
и проверив для fbconnect://success
и fbconnect://cancel
.
Насколько я знаю, родительская страница не может контролировать URL-адрес iframe.
Я мог бы открыть соединение Comet с сервером с родительской страницы и перенаправить Facebook на мой сервер, который затем будет уведомлять родительскую страницу об успешном завершении. Но мне не нравится идея вторжения серверного компонента в мой webapp только из-за этого.
Есть ли у кого-нибудь умные идеи?
Изменить: речь идет о веб-приложении, а не о родном приложении.