我的访问权限'来自facebook是"不正确的价值"

时间:2017-09-07 13:58:44

标签: facebook react-native django-rest-framework django-allauth django-rest-auth

我正在使用django-rest-auth,它是" Django all-auth"的API扩展。我正在建立一个可以使用Facebook令牌注册/登录的移动应用程序(网址:http://localhost:8000/rest-auth/facebook/)。

  1. 使用' expo'

    获取Facebook令牌
    .nested_fields
      = f.label :name 
      = f.text_field :name
      = fields_for :gene do |g|
        = g.label :name
        = g.text_field :name
      = link_to_remove_association 'remove SV', f
    
  2. 在Http POST请求中包含令牌

    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);
    };
    
  3. 我收到400错误。所以我在localhost浏览器和Postman上打印了测试的令牌。两者都返回

    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 });
      });
    }
    
  4. 为什么我得到400不正确的值错误?

    • settings.py

      SITE_ID = 7#我在shell中搜索了相应的SITE_ID。

    • 管理员

      Social_Application。 =>

      {
          "non_field_errors": [
              "Incorrect value"
          ]
      }
      

    我认为我为' access_token'提供了错误的价值。我们不能从expo.Facebook.logInWithReadPermissionsAsync?中添加令牌。由于FB令牌随时间而变化。

1 个答案:

答案 0 :(得分:0)

在社交应用(http://localhost:8000/admin/socialaccount/socialapp/1/change/)的管理页面中,您需要为Facebook提供者指定“秘密密钥”。