求助 SAE cron 定时发微博问题

2013-08-17 17:03:11 +08:00
 tinyfeng
使用廖雪峰的sdk, 能获取acces_token ,

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

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

求助,
3912 次点击
所在节点    Python
12 条回复
strak47
2013-08-17 18:03:48 +08:00
试试
client.post.statuses__update(status=u'测试')
tinyfeng
2013-08-17 18:26:00 +08:00
@strak47 还真的是。。 不过为什么在本地环境下为什么可以啊 还有,这两种区别是啥
初学,不懂,烦请指教 谢谢
strak47
2013-08-17 19:24:20 +08:00
@tinyfeng 其实我也不知道=。=
一开始我跟你一样,在sae试了好多次才发现这种方法。后来发现这种在本地也可以,所以一直用这种了。
然后其他API用多了就有规律了,只要把api的斜杆替换成两个下划线就好了。
比如 statuses/repost_timeline/ids 变成 statuses__repost_timeline__ids
tinyfeng
2013-08-17 19:50:51 +08:00
@strak47 还是谢谢啊 看来得好好学习下 源码
tinyfeng
2013-08-17 19:59:51 +08:00
@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
2013-08-18 01:50:11 +08:00
@tinyfeng 能不能说下应用的基本情况,是自己开发着玩还是准备审核后为用户提供一个定时发微博的功能?
如果是前者的话,那个token可以用很久的,人工获取一次后保存下来以后都可以用。
应该不是后者吧,用户也不会给你密码。。

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

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

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

建议单独开一个路径来做授权登录。
tinyfeng
2013-08-18 23:39:45 +08:00
@gzb1985
@strak47

十分感谢! 问题解决了。

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

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

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

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

© 2021 V2EX