求助 SAE cron 定时发微博问题 - 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
tinyfeng
  •  
  •   tinyfeng 2013 年 8 月 17 日 4670 次点击
    这是一个创建于 4634 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用廖雪峰的sdk, 能获取acces_token ,

    到这一句 r = client.statuses.update.post(status=u'测试') 就运行不下去了,

    本以为是ip的问题,已添加os.environ['REMOTE_ADDR'] = 'xxx.xx.16.49',还是没有解决问题

    求助,
    12 条回复    1970-01-01 08:00:00 +08:00
    strak47
        1
    strak47  
       2013 年 8 月 17 日
    试试
    client.post.statuses__update(status=u'测试')
    tinyfeng
        2
    tinyfeng  
    OP
       2013 年 8 月 17 日
    @strak47 还真的是。。 不过为什么在本地环境下为什么可以啊 还有,这两种区别是啥
    初学,不懂,烦请指教 谢谢
    strak47
        3
    strak47  
       2013 年 8 月 17 日
    @tinyfeng 其实我也不知道=。=
    一开始我跟你一样,在sae试了好多次才发现这种方法。后来发现这种在本地也可以,所以一直用这种了。
    然后其他API用多了就有规律了,只要把api的斜杆替换成两个下划线就好了。
    比如 statuses/repost_timeline/ids 变成 statuses__repost_timeline__ids
    tinyfeng
        4
    tinyfeng  
    OP
       2013 年 8 月 17 日
    @strak47 还是谢谢啊 看来得好好学习下 源码
    tinyfeng
        5
    tinyfeng  
    OP
       2013 年 8 月 17 日
    @strak47 模拟登陆获取code, header里应该都加些啥进去 某段代码刚才还可以用,现在不行了诶

    postdata = {"client_id": APP_KEY,
    "redirect_uri": REDIRECT_URL,
    "userId": USERID,
    "passwd": PASSWD,
    "isLoginSina": "0",
    "action": "submit",
    "response_type": "code",
    }

    headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0",
    "Host": "api.weibo.com",
    "Referer": referer_url
    }

    req = urllib2.Request(
    url = AUTH_URL,
    data = urllib.urlencode(postdata),
    headers = headers
    )
    strak47
        6
    strak47  
       2013 年 8 月 18 日
    @tinyfeng 能不能说下应用的基本情况,是自己开发着玩还是准备审核后为用户提供一个定时发微博的功能?
    如果是前者的话,那个token可以用很久的,人工获取一次后保存下来以后都可以用。
    应该不是后者吧,用户也不会给你密码。。

    其实我也没用过sae的cron功能,当时刚接触时也觉得要自动获取code太麻烦了,后来才注意到token是长期有效的。
    gzb1985
        7
    gzb1985  
       2013 年 8 月 18 日
    token保存了没?token有效期一般一周左右,如果是测试者自身的帐号,则有效期非常长
    你是在cron响应路径做的授权获取token?如果是,这样不太恰当,因为授权需要一个回调过程。
    应该是专门的路径做好授权,保存好token(SAE中mysql和kvdb都可以),cron路径里获取该token,初始化client,然后调用对应api
    tinyfeng
        8
    tinyfeng  
    OP
       2013 年 8 月 18 日
    @strak47 是自己试试的。 好像这个token有效期好像是24小时, 没学会怎么用数据库,再试试吧。 是不是因为我获取token太频繁,这个应用被限制了? 但人工获取code还是可以使用的
    tinyfeng
        9
    tinyfeng  
    OP
       2013 年 8 月 18 日
    @gzb1985 没保存啊 都在cron的响应路径里获取的access_token。

    现在的问题是: 刚开始已经可以定时发送微博了, 但现在不行了。 因为获取不到code了,难道是因为我获取token太频繁? 但人工获取code还是可以发送微博的。

    这是我的代码https://github.com/avriler/TimingWeibo
    strak47
        10
    strak47  
       2013 年 8 月 18 日
    @tinyfeng 不会的,自己帐号去授权自己创建的应用,有效期有五年那么久!
    你把这个token直接保存在代码里,比如 token='xxxxxx',不用数据库。 然后每次都拿这个token去发微博就好了。
    gzb1985
        11
    gzb1985  
       2013 年 8 月 18 日
    第一次授权登录后获取到access_token,后续的操作仅用该token即可,code是授权登录过程中一个中间步骤。按照@strak47 的方式,把获取到的token写死在代码中也可。但不要在cron任务里做授权登录,这样没有必要,也很容易产生问题,说不定weibo对频繁授权会有限制。

    建议单独开一个路径来做授权登录。
    tinyfeng
        12
    tinyfeng  
    OP
       2013 年 8 月 18 日 via Android
    @gzb1985
    @strak47

    十分感谢! 问题解决了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1215 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 17:37 PVG 01:37 LAX 10:37 JFK 13:37
    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