Я сделал обертку для Facebook api
, чтобы войти в систему и получить зарегистрированного пользователя. В моей апи мне нужноПовторное использование результатов Observables на другом этапе потока RX
- Войти с Facebook,
- вход с моим апи
- пользователя обновление с ее
facebook id
.
Все методы CustomerRepository и FacebookRepository возвращают Observables.
Итак, сначала я делаю mFacebookRepository.startLoginFlow()
, чтобы войти в систему с помощью fb.
Результатом этого является пользователь Facebook, который будет использоваться mCustomerRepository.loginWithFacebook
и mCustomerRepository.updateFacebookId
, но этот номер следует называть, только если loginWithFacebook
работал.
Я пробовал использовать внешний финальный массив, но выглядел очень плохо для меня.
final String[] facebookUserId = new String[1]; Subscription subscription = mFacebookRepository.startLoginFlow() .compose(applyIoSchedulers()) .switchMap(user -> { facebookUserId[0] = user.getId(); // Save it for reuse later :( mCustomerRepository.loginWithFacebook(user); }) .switchMap(session -> mCustomerRepository.getCurrent()) .switchMap(customer -> mCustomerRepository.updateFacebookId(customer, facebookUserId[0]) // Reused here) .subscribe(user -> { mView.dismissProgress(); mView.startLoggedView(); mView.close(); }, error -> { mView.dismissProgress(); manageErrorFlow(error); });
как я могу разделить пользователей facebook идентификатор с более чем одного абонента?
но Theres путаницу, пользователь не такой же, как клиента, Facebook дайте мне пользователя, затем я использую этого пользователя для выполнения нескольких действий, но как использовать его на разных этапах цепочки? – Caipivara
@ danielgomezrico, как вы можете видеть, в моем коде пользователь не тот же клиент. Я просто не включил объект 'user' в код. На самом деле, я не понимаю, что вы имеете в виду, в коде выше вы можете использовать объект 'User' в разных шагах цепочки, не так ли? в '.map (устройство -> новый FacebookCredential (пользователь, устройство))' и '.map (клиент -> updateFacebookId (customer, user.getId()))' И этот код должен работать на вас. – Alexander
@ danielgomezrico просто заменит мои поддельные функции и объекты на определенные из фейсбуков, и он должен работать – Alexander