Facebook的GraphRequestManager()未定义,但应该有效吗?

时间:2016-08-11 15:48:44

标签: javascript facebook react-native

Facebook身份验证效果很好,但是当我去制作图表请求时:

          const infoRequest = new GraphRequest(
                '/me',
                  {
                    accessToken: tokenString,
                      fields: 'email,first_name,name,last_name,picture' 
                  },
                  this._responseInfoCallback
                );

        new GraphRequestManager().addRequest(infoRequest).start();

               }

我得到" TypeError:无法读取属性' start'未定义"

使用Chrome调试器,一切看起来都应该正常工作,甚至将GraphRequestManager作为变量存储,只需调用start(),就可以获得所需的一切。当我调用start()时,即使使用我在此站点上找到的示例代码也会失败。我错过了一些明显的东西吗?

这里有更多信息。我用这个导入:

const FBSDK = require('react-native-fbsdk');
const {
  GraphRequest,
  GraphRequestManager
} = FBSDK;

如果我使用FBGraphRequest和FBGraphRequestManager而不是上面,我会收到错误,说明GraphReqest等在我使用它们时不起作用。否则,我的其余代码看起来与Shivam非常相似,但我得到了“无法读取属性”的开始'未定义',显然GraphRequestManager调用失败或未定义(这对我没有意义)。

2 个答案:

答案 0 :(得分:1)

根据我的经验,您要请求的字段在参数内指定:

AccessToken.getCurrentAccessToken().then(
        (data) => {
          let accessToken = data.accessToken
          const infoRequest = new GraphRequest(
          '/me',{
                        accessToken: accessToken.toString(),
                        parameters: {
                          fields: {
                            string: 'email,first_name,name,last_name,picture'
                          }
                        }
                      },
              this._responseInfoCallback.bind(this),
            );

        new GraphRequestManager().addRequest(infoRequest).start();
        })

Ps你在哪里放置这些功能?他们是否在课堂上?

答案 1 :(得分:0)

您的import语句可能存在潜在问题,您可以共享整个代码,例如:

const FBSDK = require('react-native-fbsdk');
const {
  FBGraphRequest,
  FBGraphRequestManager,
} = FBSDK;

_responseInfoCallback(error: ?Object, result: ?Object) {
  if (error) {
    alert('Error fetching data: ' + error.toString());
  } else {
    alert('Success fetching data: ' + result.toString());
  }
}

const postRequestParams = {
  fields: {
         message: 'Hello World!'
      }
}

const postRequestConfig = {
  httpMethod: 'POST',
  version: 'v2.7',
  parameters: postRequestParams,
  accessToken: token.toString()
}

const infoRequest = new GraphRequest(
  '/me/feed',
  postRequestConfig,
  this._responseInfoCallback,
);

new FBGraphRequestManager().addRequest(infoRequest).start();