Facebook Connect для мобильного приложения - PullRequest
1 голос
/ 21 июня 2011

РЕДАКТИРОВАТЬ - ближе.Нужен номер порта для моего URL обратного вызова.

т.е. http://127.0.0.1:1234

Проблема в том, что порт динамический и постоянно меняется.Кто-нибудь сталкивался с этим раньше?


Работа с ромбом.Нужна помощь, чтобы лучше понять, как работает Facebook oauth2.

когда пользователь запускает приложение в первый раз, он хочет подключиться к Facebook, чтобы получать информацию о пользователе и публиковать сообщения на стене, когда комментарии пользователя.

Предположим, яможет сделать следующее:

Есть кнопка, которая вызывает действие в моем контроллере.-> Действие запускает WebView на FB mobile для аутентификации -> Пользователь вводит учетные данные на FB -> на redirect_uri_controller получает auth_code, и я делаю AsyncHttp.get запрашивающий токен с другим redirect_url -> lands redirect_url & auth_token.

Прямо сейчас, есть кнопка, которая вызывает указанный ниже контроллер

def fb_initiate_connect
  call_back_url = url_for(:controller => "Settings", :action => :fb_initiate_connect_callback)
  url = "http://www.facebook.com/dialog/oauth?client_id=#{fb_app_id}&redirect_uri=#{call_back_url}&scope=email,read_stream,publish_stream&display=touch"
  WebView.navigate(url)
end

Это запускает UIWebview в моем приложении, переходит на мобильный сайт FB, но получает сообщение "Произошла ошибка с APP_NAME. Пожалуйста, попробуйтеснова позже."

Подумайте, потому что cookie не установлен / не найден?Все здесь в значительной степени ручное, поэтому придется делать что-то вроде WebView.execute_js("document.cookie=WHAT?;") Но я должен поместить это в мой call_back_url или fb_initiate_connect?

1 Ответ

0 голосов
/ 24 июня 2011

Да, Rhodes динамически настраивает порт, потому что указание явного порта может конфликтовать с другим портом, используемым на устройстве другим приложением Rhodes, или чем-либо еще на устройстве.

Вы можете принудительно настроить порт, на котором вашприложение запускается в файле RhoConfig.txt со свойством:

local_server_port = 8080

Однако лучшим решением будет получить порт динамического сервера по:

System.get_property('rhodes_port') 
...