首页 > 解决方案 > Expo Facebook登录-产生无效令牌

问题描述

我按照文档使用 Facebook 登录 SDK。除了生成的令牌不适用于我们的 API 之外,一切正常。我们的 API 将用户生成的令牌作为标头,以便它可以发出请求。我知道它不起作用的原因是我使用 Facebook 登录,但我们的 API 上没有创建帐户。Facebook 不会让我访问用户的密码(出于显而易见的原因),因此我无法根据 Facebook 提供的信息生成帐户。

我认为答案在于 App Access Tokens。如果有人可以帮助我,我将不胜感激!

代码:

export const logInFB = () => async dispatch => {
  const { type, token } = await Expo.Facebook.logInWithReadPermissionsAsync('**Blocking this out**', {
      permissions: ['public_profile'],
    });
  console.log('token');
  console.log(token);
  if (type === 'success') {
    // Get the user's name using Facebook's Graph API
    const response = await fetch(
      `https://graph.facebook.com/me?access_token=${token}`);
    console.log('fb token')
    console.log(response);
    dispatch(fbLoginToken(token));
    Alert.alert(
      'Logged in!',
      `Hi ${(await response.json()).name}!`,
    );
  }
} 

标签: facebookreact-nativereduxexpo

解决方案


看起来您缺少fieldsURL 中的属性。前任:&fields=id,name,email,about,picture

请参考这个例子:https ://snack.expo.io/@bacon/facebook

const response = await fetch(
      `https://graph.facebook.com/me?access_token=${token}&fields=id,name,email,about,picture`
    );
const responseJSON = JSON.stringify(await response.json());
this.setState({ responseJSON });

推荐阅读