使用redux saga进行Facebook登录

时间:2019-09-16 22:31:15

标签: redux-saga

我写了一个传奇故事,可以通过Facebook进行身份验证,并且一切正常。但是,现在,我正在尝试扩大我的传奇故事,以在登录用户时击中服务器端点。在较高的层次上,一旦用户单击“与Facebook连接”,该传奇故事将被执行,首先向/ LoginWithFacebook发送请求端点(传递电子邮件和用户ID),然后调度将创建会话的操作。需要明确的是,第二部分已经起作用。

以下是相关的故事:

工人:

export function* loginFacebook({ scope = 'public_profile', fields = 'id,name,email', ...options } = {}) {
  const request = {
    service: 'facebook', scope, fields, ...options,
  }

  try {
    yield call(promises.fbLogin, { scope, ...options })
    const data = yield call(promises.fbGetMe, { fields })
    const picture = `https://graph.facebook.com/${data.id}/picture?type=normal`
    const loginDetails = yield call([api, api.post], `/LoginByFacebook`, { email: data.email, facebookId: data.id })
    yield put(actions.socialLoginSuccess({ ...data, picture }, request))
  } catch (e) {
    yield put(actions.socialLoginFailure(e, request))
  }
}

观察者:

export function* watchSocialLoginFacebook() {
  const { payload } = yield take(serviceAction('PREPARE', 'facebook'))
  yield call(prepareFacebook, payload)
  while (true) {
    const { payload } = yield take(serviceAction('REQUEST', 'facebook'))
    yield call(loginFacebook, payload)
  }
}

根:

export default function* ({ api }) {
  yield fork(watchSocialLoginFacebook)
}

由于某些原因,我的传奇故事不执行带有'/ LoginByFacebook'的行,并且控制台中未显示任何内容。我仍然不了解Saga的概念,因此很可能我从根本上误解了一些东西。

0 个答案:

没有答案