【发布时间】:2018-02-16 07:23:45
【问题描述】:
我正在使用 django-rest-auth,它是“Django all-auth 的 API 扩展”。我正在构建一个可以使用 Facebook 令牌(网址:http://localhost:8000/rest-auth/facebook/)注册/登录的移动应用程序。
-
使用“expo”获取 Facebook 令牌
export const doFacebookLogin = () => async dispatch => { let { type, token } = await Facebook.logInWithReadPermissionsAsync('194632xxxxxx', { permissions: ['public_profile'] }); if (type === 'cancel') { return dispatch({ type: FACEBOOK_LOGIN_CANCEL }) } doSocialAuthLogin(dispatch, token); }; -
在 Http POST 请求中包含令牌
const doSocialAuthLogin = async (dispatch, token) => { console.log(token); axios.post(`${ROOT_URL}/rest-auth/facebook/`, { access_token: token }).then(response => { AsyncStorage.setItem('stylee_token', response.data.token); dispatch({ type: AUTH_LOGIN_SUCCESS, payload: response.data.token }); }) .catch(response => { if(response.status === 400) { console.log('Not authorized. '); } else if (response.status === 403){ console.log('You are not suposed to see this message. Contact Administrator'); } dispatch({ type: SOCIAL_FACEBOOK_LOGIN_FAIL }); }); } -
我收到 400 错误。所以我打印了在 localhost 浏览器和 Postman 上测试的令牌。两者都返回
{ "non_field_errors": [ "Incorrect value" ] }
为什么会出现 400 Incorrect value 错误?
-
settings.py
SITE_ID = 7 # 我从 shell 中搜索了相应的 SITE_ID。
-
管理员
社交应用程序。 =>
provider: Facebook name: ~ Client id:~ Secret Key: ~ Chosen Sites: 'http://localhost:8000'
我认为我为“access_token”设置了错误的值。我们不能从 expo.Facebook.logInWithReadPermissionsAsync 放置令牌吗?由于 FB 令牌会随着时间而变化。
【问题讨论】:
-
示例) access_token : "sdkfnsdkfnslkefnefnsefjbsefjkbsekfjse"
-
你解决了吗?
标签: facebook react-native django-rest-framework django-allauth django-rest-auth