首页 > 解决方案 > 如何在 React Native 中将 Facebook Graph api 请求转换为 Axios?

问题描述

尝试将 Facebook Graph api 请求转换为 axios 格式。

const infoRequest = new GraphRequest(
            '/me',
            {
                accessToken: tokenData.accessToken,
                parameters: {
                    fields: {
                        string: 'id,email,name,picture'
                    }
                }
            },
            responseInfoCallback
        );

尝试了以下

const result = await axios.get('https://graph.facebook.com/me',
            {
                accessToken: tokenData.accessToken,
                parameters: {
                    fields: {
                        string: 'id,email,name,picture'
                    }
                }
            }
                );

导致错误

 Facebook GraphAPI error: Error: Request failed with status code 400

标签: reactjsreact-nativefacebook-graph-apiaxios

解决方案


发生这种情况是因为 facebook 需要以下格式的请求 url: https ://graph.facebook.com/v9.0/me?fields=id,name&access_token=your_access_token_will_go_here

但是 axios 将 url 转换为格式:
https://graph.facebook.com/v9.0/me?fields=id%2Cname&access_token=your_access_token_goes_here

使用axios正确的方法facebook Graph API

const accessToken = your_access_token;
const { data } = await axios({
   url:
     "https://graph.facebook.com/v9.0/me?fields=id,name&access_token=" + accessToken,
   method: "get",
});

或放入try catch块中

try {
  const { data } = await axios({
    url:
      "ttps://graph.facebook.com/v9.0/me?fields=id,name&access_token=" + accessToken,
    method: "get",
  });
  console.log("response from fb request", data);
} catch (err) {
   console.log(
      "There is an error occured while making request to FB Graph API: " + err
   );
}
   

推荐阅读