我写了一个传奇故事,可以通过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的概念,因此很可能我从根本上误解了一些东西。