开发 facebook 相关的服务,感觉神烦 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
lavande
V2EX    Python

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

  •  
  •   lavande 2017 年 5 月 20 日 3778 次点击
    这是一个创建于 3173 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    • 开发姿势 1: 本地敲代码,然后 debug 模式运行 flask,然后把服务器 80 端口转发到本地,本地 flask 再爬个梯子连回服务器,向 FB 发送请求,可以绕地球七圈半……

    • 开发姿势 2: ssh 到服务器,开一个 vim 之类的编辑器,ssh 再开一个 session,运行程序;或者之前有人提到 pycharm 可以直接更新代码到远程服务器,不过之前试过那玩意儿太大了,觉得卡卡地……

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

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

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

    lt 固定域名的方式可以调微信公众号之类带 webhook 的…
    oott123
        18
    oott123  
       2017 年 5 月 21 日 via Android
    手抖多打了个 0. 手机回复见谅
    magicdawn
        19
    magicdawn  
       2017 年 5 月 21 日
    @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
        20
    WildCat  
       2017 年 5 月 21 日 via iPhone
    http_proxy 环境变量
    Miy4mori
        21
    Miy4mori  
       2017 年 5 月 21 日 via iPhone
    端口转发到本地啊
    coolcoffee
        22
    coolcoffee  
       2017 年 5 月 21 日
    微信的不也是这样呀, 需要预先设置域名。

    我当时的解决办法就是,修改 hosts,把域名解析到本地。开发完再删掉
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5299 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 54ms UTC 07:08 PVG 15:08 LAX 23:08 JFK 02:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86