Именно то, что говорится в названии. Можно ли использовать Facebook Connect (или любые другие средства интеграции FB) в собственном приложении для iPhone, не прибегая к встроенному диалоговому окну входа (который выглядит ужасно)? Что-то, где я мог бы создать свой собственный экран входа в систему, запрашивая имя пользователя и пароль для входа в facebook, а затем используя собственные методы fbconnect для проверки этой информации и получения правильного сеанса?iPhone SDK/Facebook Connect: использование настраиваемого диалогового окна для входа
ответ
Не делайте этого. Это противоречит политике, и ваше приложение будет закрыто для этого. Подобно предложению quixoto, это связано с тем, что мы не хотим обучать пользователей вводить пароль в случайных местах и потому, что пользователь не подтвердил действие в соответствии с нашими требованиями UX. В настоящее время мы работаем над редизайном этих диалогов, чтобы сделать их красивее.
Спасибо дааку. Это действительно старый вопрос (в dev time), но поскольку вы, похоже, являетесь официальным разработчиком FBConnect (или обладаете каким-то авторитетом на нем), я с радостью принимаю ваш ответ. – boliva
Хе-хе, я только недавно начал смотреть на переполнение стека :) – daaku
Хотя пользовательские формы входа могут быть отличными, я бы хотел, чтобы у Twitter было что-то подобное. – samvermette
Когда я заглянул в Facebook Connect, они казались довольно жесткими в их API и любых модах, которые вы могли бы сделать. Ни разу не упоминается на facebook.com/x о настройке интерфейса, поэтому я думаю, что вы должны придерживаться того, что они одобрили.
facebook не принадлежит вам, это их, поэтому, если вы собираетесь жить в своем доме и использовать свой код, вам нужно играть по своим правилам. Если вам это не нравится, сверните свой собственный api через http с помощью собственных классов фрейма – slf
@slf: Я знаю об этом. Вот почему я спрашиваю, знает ли кто-нибудь альтернативный способ с уже существующим api, который использует службы, которые предоставляет FB, и кажется, что ответ «нет» ... – boliva
Что было бы замечательно, если бы на самом деле было выполнено входное диалоговое окно базовая форма проверки как минимум. Вы можете отправить форму без заполнения вашего адреса электронной почты или пароля. Шодди, дрянной, пользовательский интерфейс.
Да и нет.
Facebook использует делегированный auth, чтобы ваше приложение соединилось с ним. Таким образом, пользователь должен ввести свой пароль в нечто «доверенное» (например, страницу входа в систему Facebook), чтобы ваше приложение фактически не увидело его, и получает только ключ. Идея заключается в том, что пользователи, таким образом, обучены не доверять другим веб-страницам/приложениям своим паролем.
Таким образом, FB предоставляет это веб-всплывающее окно в своей библиотеке FBConnect без какого-либо другого явного способа включения учетных данных пользователя в сеанс.
Это, и я отвечу на ваш технический вопрос, так как это законный вопрос; вы могли бы сделать то, что хотели, создав внеэкранный UIWebView, разместив все URL-адреса входа FB в этот веб-просмотр и введя Javascript на страницу с помощью stringByEvaluatingJavaScriptFromString:
. Этот Javascript может использовать имя пользователя/пароль, заполнить форму и отправить ее без возможности ее просмотра. Прочтите код библиотеки FBConnect, чтобы понять, какой URL использовать, и что делать с результатом отправки страницы - вы можете подключить его обратно в библиотеку.
Выполнение этого является (1) хрупким, поскольку вам придется полагаться на идентификаторы и прочее, которое может/может измениться, чтобы победить только такие методы и (2), вероятно, нарушает условия использования для FB Connect и, конечно же, 3) не очень хорошо для здоровья auth в Интернете в целом, поскольку он не усиливает то, что пользователи не должны доверять третьим сторонам своими паролями.
И совершенно очевидно, что если вы идете в одиночку и предоставляете пользователям более привлекательный опыт работы в режиме auth, никогда, никогда не храните и не делайте что-либо со своими полномочиями, кроме предоставления им Facebook.
@quixoto: Я думал о делая что-то подобное себе, но, как вы говорите, оно может сломаться в любой момент. – boliva
К сожалению, я не верю, что вы найдете решение, более стабильное, чем это; Разрешенное доверенное лицо Facebook - это способ, с помощью которого они позволяют вам аутентифицироваться, - вы можете завершить это веб-взаимодействие в скрытом виде или сделать это вручную, используя сокет NSURLConnection с целым куском интеллектуальных эвристик, чтобы найти нужные поля и т. Д. но, несмотря ни на что, вы будете хрупкими на каком-то уровне, так как они не гарантируют ничего о внутренних, за исключением того, что URL-адрес авторизации останется прежним. –
Когда вы говорите, что loginDialog ужасно, вы имеете в виду, что экран все испорчен, потому что пользователям приходится прокручивать, чтобы найти текстовые поля ??? Если это так, вы можете сделать вид, что экран loginDialog выглядит симпатичным. Подходим к экрану без необходимости прокрутки. – Raja
@Raja у вас есть ссылка на информацию об этом обходном пути? –
@Raja: Я имею в виду ужасное в том смысле, что оно выглядит точно так, как есть, UIWebView, встроенный поверх полузасуженного лайтбокса, который разрывает все виды пользовательских интерфейсов, которые вы, возможно, захотите внести в свое приложение. – boliva