2013-05-28 3 views
4

Так что я много раз искал эту тему и, возможно, слишком усложнял ситуацию, но хотел бы получить некоторую ясность. Итак, вот в чем проблема.Ссылка на графику Facebook на приложении iOS и веб-приложении

У меня есть веб-приложение, использующее Facebook Graph (FB Login, приглашение друзей, обмен через FB и т. Д.). Мы только что создали приложение iOS для веб-сайта и теперь хотим реализовать все вышеперечисленные действия FB в приложении iOS. Я просмотрел документацию в Facebook и попытался использовать это для того, чтобы просто войти в систему Facebook для работы с пользователем, который уже зарегистрирован на нашем веб-сайте (и также имеет связанную с ним учетную запись на Facebook), но он, похоже, не работает.

Use case - Пользователь регистрируется в веб-приложении и подключает к ним свою учетную запись FB. Затем они загружают приложение iOS и хотят использовать логин FB для входа в приложение iOS или совместного использования объектов на их временной шкале. Также следует применять и наоборот.

Вопрос - Каким должен быть рабочий процесс между ios App, веб-сервером и Facebook для примера использования выше? В принципе, как проходит токен и секрет, так что все трое знают, что мы говорим о том же пользователе и той же учетной записи FB?

Любые ссылки или советы были бы высоко оценены! Благодаря!

+0

У вас есть еще вопросы об интеграции Facebook с вашим приложением ios? –

ответ

5

В случае, когда пользователь facebook с authed webapp сначала запускает собственное приложение, вы не будете знать, кто он. Поэтому им необходимо запросить кнопку «Войти с помощью facebook». Когда они нажмут эту кнопку, facebook-ios-sdk выяснит, кто входит в систему, а затем проверяет, предоставил ли этот пользователь доступ к вашему приложению. Если веб-приложение и собственное приложение указывают на одно и то же приложение facebook, тогда facebook-ios-sdk просто сохранит токен доступа с аутридом, и у вас будет доступ ко всему, что делает ваше веб-приложение в своем родном приложении.

Ключ здесь в том, что ваше веб-приложение и родное приложение должны указывать на одно и то же приложение facebook (то есть, тот же идентификатор приложения в developers.facebook.com). Если это не так, то пользователь собственного приложения будет повторно запрашиваться, чтобы предоставить разрешения, когда они нажимают кнопку «Войти с помощью facebook». Кроме того, важно, чтобы пользователь регистрировался в одной учетной записи facebook в веб-приложении (на основе файлов cookie в браузере) и на самом телефоне. В facebook-ios-sdk используется несколько различных способов поиска активной учетной записи facebook на телефоне. Он пытается использовать учетную запись iOS 5+ для системы facebook, вызовы между приложениями собственного собственного приложения facebook, куки-файлы браузера для экземпляра веб-представления, запущенные в вашем приложении, или отскакивают вас от сафари и используют cookie-файл браузера в сафари. Кто когда-либо возвращается, сначала говорит, что у них активная учетная запись facebook должна найти ту же учетную запись в facebook, что и в веб-приложении. В большинстве случаев они будут совпадать, поскольку большинство пользователей имеют только одну учетную запись в facebook и регистрируются везде с одинаковой учетной записью, но они могут быть разными. Во избежание того, что пользователь facebook в веб-приложении не такой же, как пользователь активного пользователя в facebook, как обнаружено facebook-ios-sdk, тогда кнопка «login with facebook» просто предложит пользователю активного пользователя facebook войти в систему и предоставить разрешения.

После того, как токен доступа был предоставлен родному приложению, вы можете отправить его обратно на сервер, найти соответствующий идентификатор пользователя facebook, и теперь пользователь веб-приложения и пользователь собственного приложения могут быть связаны одинаковыми человек, работающий с обоими приложениями. Кроме того, любые вызовы графиков api, которые вы хотите сделать на сервере, могут быть сделаны от имени пользователя, используя обновленный токен доступа, который вы только что получили из собственного приложения. Любые вызовы общего доступа/публикации/api, сделанные непосредственно в собственном приложении через facebook-ios-sdk, будут выполняться как этот пользователь и будут обрабатываться sdk (то есть вам не нужно будет беспокоиться об этом ... он должен просто работайте без сбоев и интегрируйте все сообщения в их временные рамки так же, как и график apis веб-приложения).

В случае, если у вас есть пользователь facebook authed, входящий в веб-приложение, вы также не будете знать (по первому запросу), кто этот пользователь. Вы можете представить их с помощью входа в facebook js sdk и, опять же, когда один и тот же пользователь facebook входит в систему, вы можете связать этого текущего пользователя веб-приложения с тем, кто ранее был в родном приложении.

В частности, если вы решите обратиться к своему вопросу, у вас действительно нет возможности узнать, кто является мигрирующим пользователем на веб-приложении или в родном приложении, когда они впервые приходят в приложение. Вот где приходит «вход с facebook». Предполагая, что пользователь зарегистрирован в той же учетной записи в браузере, а также на своем телефоне (как определено facebook-ios-sdk), тогда процесс входа в ваше приложение бесшовные. У них не будет предложено предоставлять разрешения во второй раз (если только ваши разрешения не различаются между веб-приложением и родным приложением), и вам будет немедленно предоставлен токен доступа пользователя. Роль сервера заключается в согласовании двух пользователей с использованием предоставленного токена доступа. С помощью токена доступа сервер может сделать простой вызов графика api и получить идентификатор пользователя facebook пользователя. Используя этот идентификатор пользователя facebook, вы сможете сопоставить «истинные» идентификаторы пользователей в ваших приложениях (то есть теперь вы знаете, что пользователь веб-приложения и пользователь собственного приложения один и тот же). Как только вы узнаете, кем является пользователь, вы сможете предоставить персонализированный опыт этому пользователю на основе его личности независимо от того, использует ли он ваше веб-приложение или собственное приложение.

Надеюсь, это поможет. Рад ответить на другие вопросы, которые могут возникнуть.

+1

Это необычайно длинный, продуманный и хорошо написанный ответ. Хорошая работа! – ekinnear

+0

Большое спасибо за удивительный ответ Г-н Т! Извините за задержку в его принятии. Был пойман в тонне работы. Еще раз спасибо! – Amit

Смежные вопросы