Как получить данные профиля пользователя из Janrain в Rails

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


person Mayuresh Srivastava    schedule 13.10.2016    source источник


Ответы (1)


Во-первых, вам не нужно хранить данные регистрационной формы в собственной базе данных. Это было бы излишним при использовании Janrain Registration.

После того, как пользователь прошел аутентификацию и токен Janrain OAuth был отправлен в виджет регистрации, вы можете использовать этот токен для вызова конечной точки объекта:

https://SOME_APP_NAME.janraincapture.com/entity?access_token=someaccesstoken

Это вернет данные профиля аутентифицированного пользователя в формате json. Вы можете отфильтровать поля, используя параметр атрибутов, как описано здесь: https://docs.janrain.com/api/registration/entity/

https://SOME_APP_NAME.janraincapture.com/entity?access_token=someaccesstoken&attributes='["uuid","familyName","givenName"]'

Вероятно, вам следует привязаться к обработчику событий Javascript регистрации Janrain: «onCaptureCreateSession», который при запуске будет содержать токен доступа. Затем вы можете отправить этот токен на свой сервер, где он может сделать вызов API сущности, а затем сохранить любые соответствующие данные на вашем сервере (при необходимости).

janrain.events.onCaptureSessionCreated.addHandler(function(result) {
  //make an ajax call to your server here with the token:
  var token = result.accessToken  
});

Если вам абсолютно необходимо получить данные поля формы до отправки формы, вы можете привязаться к событию onSubmit формы и просто получить данные поля из формы до ее отправки. Это должно быть достижимо с использованием простого Javascript или большинства основных библиотек.

Вот пример, который должен помочь вам начать:

janrain.events.onCaptureRenderComplete.addHandler(function(result) {
  if (result.renderingBuiltInScreen == false) {
    //NOTE: screen names can be configuration dependent.
    if(result.screen == "traditionalRegistration" || result.screen == "socialRegistration"){
      //bind to rendered form here and do stuff
      //form names and field names are configuration dependent.
    }
  }
}

person PBICS    schedule 13.10.2016
comment
Когда я нажимаю MY_APP_NAME.janraincapture.com/ в своем браузере, я вижу данные в формате JSON, но когда я делаю то же самое в своем контроллере, я получаю только URL. Код моего контроллера: class UsersController < ApplicationController require 'rest_client' def index @results = @ab @url def getData response = RestClient::Resource.new(@url,{ :content_type => :json, "secret" => "myapikey" } end def retrieve_results @id = params[:id] @url = "https://myapp.janraincapture.com/entity?access_token=#{@id}" @ab = JSON.parse(getData) end - person Mayuresh Srivastava; 14.10.2016
comment
о да, я уже проголосовал за ваши ответы, но сейчас моя репутация ‹ 15 :-( - person Mayuresh Srivastava; 16.10.2016
comment
Эй... мне нужно еще одно предложение от вас относительно обновления... Если пользователь обновляет данные профиля в janrain... тогда я также хочу обновить свою локальную базу данных. Итак, с вашей точки зрения, как я могу обновить данные в своей локальной базе данных? - person Mayuresh Srivastava; 18.10.2016
comment
Если кому-то еще интересно, вы можете перехватить любую регистрационную форму, используя метод, продемонстрированный выше. Вам просто нужно знать имя формы конфигурации регистрации (он же поток) и имя экрана, на котором она отображается. - person PBICS; 19.10.2016