开发 facebook 相关的服务,感觉神烦

2017-05-20 23:13:33 +08:00
 lavande

之前请教过大家如何用 flask,后来开发了个微信公众号的相关服务,这会儿玩 facebook,发现特别分裂。

背景描述:用户访问我的网站,然后通过 FB 登录,我的服务器拿到 token,通过 API 向 FB 服务器请求数据,处理后显示给用户。 需要事先注册好域名在 FB 开发者后台填写好,如果通过其他域名(比如 localtunnel 生成的链接)访问服务,会出错。

两种姿势都觉得很分裂啊,大家有啥更优雅的姿势不?

3213 次点击
所在节点    Python
22 条回复
billlee
2017-05-21 00:42:07 +08:00
首先,你可以用 tmux, 不需要搞那么多 ssh session.
其次,你可以在本地敲代码,然后 rsync 到服务器上,不一定要在服务器上开 ssh 敲。
Kilerd
2017-05-21 02:20:12 +08:00
ngrok 转发到本地
ETiV
2017-05-21 02:25:32 +08:00
ssh -fNR 转发到本地
notes
2017-05-21 06:59:00 +08:00
搞一条能用的 facebook 的 host
XYxe
2017-05-21 08:03:12 +08:00
VSCode 有个插件可以用 ftp 来同步代码,用了一段时间还好。
junzki
2017-05-21 08:28:15 +08:00
Sublime Text 的 FTPSync 插件不错
或者 RSync 一下?
或者干脆用 NFS 把远程服务器的目录挂载到本地?
AlexaZhou
2017-05-21 09:59:48 +08:00
试试改本地 host 记录,把域名指向本地
leopku
2017-05-21 10:13:09 +08:00
Mock 是正解
mokeyjay
2017-05-21 10:38:40 +08:00
改 hosts 把域名指向本地即可
magicdawn
2017-05-21 10:57:13 +08:00
如果只是做 Facebook login 的话, 可以不使用 OAuth redirect 模式, 跳来跳去, 使用 SDK, 无需跳转...
在 PC 网页端 / 移动网页端 / App 端接入 SDK, 直接获取 fb token, 然后客户端拿着 fb token 来登录系统即可...
在 PC 网页端表现是一个弹出窗口让授权...
lavande
2017-05-21 11:20:27 +08:00
@billlee 我水平比较菜,经常需要写一段之后 run 一下看看,然后发现有问题,有时候可能只改几个字母,再 run 一下……这样的话,在本地写好就会频繁需要 rsync,我试试 tmux 看看
lavande
2017-05-21 11:22:15 +08:00
@Kilerd 谢谢!我看一下,之前用 localtunnel,类似的,但是每次都生成一个不同 url,因为要在 FB 开发者后台填上固定的,所以非常不方便
lavande
2017-05-21 11:23:35 +08:00
@AlexaZhou 好方法,我试试看,如果 FB 和我的服务器之间交换数据时候不是直接访问我的域名的话,那应该就没问题!
oott123
2017-05-21 11:28:47 +08:00
lt --port 8080 --subdomain xxxxxx

用 localtunnel 生成一个固定的不就好了。
lavande
2017-05-21 11:29:54 +08:00
@magicdawn 这种用 SDK 不跳转的方法获取的 token 是不是在用户端,然后由用户这边连接 FB 服务器去请求数据?我现在是按照官方文档给的那个 manually login 的方法,给用户一个链接,然后授权完后 redirect 回我的网站,带上参数,然后我这边就拿到 token,去 FB 抓取一些复杂的数据,然后处理之后返还给用户,处理过程比较复杂,不太合适在用户的浏览器里完成……
lavande
2017-05-21 11:30:30 +08:00
@oott123 啊,原来是可以固定的啊,我没仔细看文档,谢谢了!
oott123
2017-05-21 11:31:12 +08:00
不过一般这种 OAuth,他们服务器都不直接访问你的域名,而是通过跳转来搞定的,所以本地 hosts 就够用了。甚至不本地 host 而是选择把某个子域名解析到 127.0.0.0.1 …(原理反正一样)

lt 固定域名的方式可以调微信公众号之类带 webhook 的…
oott123
2017-05-21 11:32:26 +08:00
手抖多打了个 0. 手机回复见谅
magicdawn
2017-05-21 11:57:09 +08:00
@lavande 拿到 FB 的 token 了, 然后调用 FB 的接口, 客户端 /服务端都可以调用, 拿基本信息
我看代码即是这个接口

/**
* 根据前端 token 获取 Facebook 账户信息
*/

const auth = exports.auth = co.wrap(function*(token) {
const me = yield rp.get({
json: true,
url: 'https://graph.facebook.com/v2.8/me',
qs: {
'fields': 'id,name,email',
'access_token': token,
}
})

// map userId
me.userId = me.id

// userId, name, email
return me
})

https://graph.facebook.com/v2.8/me 这个是公网接口, 前后端都可以调用, 如果你做的 FB 登录不需要让服务端知道, 也可以在客户端调用...但不让服务端知道没有什么意义...
WildCat
2017-05-21 14:19:29 +08:00
http_proxy 环境变量

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/362703

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX