【问题标题】:My 'access_token' from facebook is "incorrect value"我来自 facebook 的“access_token”是“不正确的值”
【发布时间】:2018-02-16 07:23:45
【问题描述】:

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

  1. 使用“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);
    };
    
  2. 在 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 });
      });
    }
    
  3. 我收到 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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 2014-09-27
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2016-10-18
    相关资源
    最近更新 更多