一、简介
最近有一个需求,需要对接facebook graph api接口,获取facebook广告账号余额。众所周知,国内是无法直接访问facebook,我找硬件部的同事安装Clash for Windows,瞬间起飞,解决传说中的翻墙问题。
接下来就是查找api,创建token,通过postman调用facebook接口,浏览器也可直接访问facebook的get接口,一切看起来是如何的顺序,没想到只是恶梦的开始,当我用程序对接调用facebook的接口时,意外来了,响应报文返回的是NULL。
刚开始以为是自己的姿势不对,facebook上下载官方SDK后,依然返回NULL。此该我才醒悟,clash不支持idea软件。我在cdm中ping了下facebook地址,果然不通。找到原因后,就开始我的个人骚操作了。
二、实现方案,部署代码服务器
阿里云够买了一台2核4G的香港服务器,安装nginx,直接反向代理到facebook地址,经过一天调试,终于搞定了,当然其中有一些细节需要注意。
1、配置反向代理
location / {
proxy_pass https://graph.facebook.com/;
proxy_set_header Host graph.facebook.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
2、请求响应大小限制配置
server {
listen 80;
server_name localhost;
proxy_buffer_size 10M;
proxy_buffers 100 10M;
3、get请求大小限制配置
client_header_buffer_size 1000k;
large_client_header_buffers 40 160k;
四、测试
关闭clash,用香港代理服务器直接访问facebook即可
http://代理IP/v20.0/me/adaccounts
响应结果:
{
"error": {
"message": "An active access token must be used to query information about the current user.",
"type": "OAuthException",
"code": 2500,
"fbtrace_id": "ALMCr8C70GTEvO7KGiZ2PEo"
}
}