最近是迷上workflow了,虽然看上去效率一点都不高的样子.

原计划是利用workflow来快速的发微博或者发推特朋友圈一类的社交应用,原理肯定是利用API了. 计划是在手机上笔记本或者便签或者是pin通知中心写一小段文字或者图片然后快速的发微博,实现随写随发.之前实现过写IDEA到印象笔记的.


半成品无法保存TK,也就是说每次都要授权那不得烦死啊.


记录一下算了

授权部分

  • 获取code
  • 利用code获取tk

获取code(主要是自动获取)

参考文档

看一下示例:

https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code  


接口很简单

GET https://api.weibo.com/oauth2/authorize  
cliet_id: 申请应用时分的  
redirect_uri: 回调地址,必须和后台填写回调地址相同  


这里面比较麻烦的就是code的获取,看下响应.

//同意授权后会重定向
http://www.example.com/response&code=CODE  


同意授权后,会重定向到回调地址同时带有code值,查了一下文档发现很多都是手动的或者客户端获取,也有利用python的特性来模拟授权登录的,但是看了模拟授权登录的文档需要知道用户的用户名和密码的,这不太好.我想了一个办法就是自己启动一个应用监听回调的请求保存起来,然后再次请求自己的应用地址返回code的值实现自动处理code
我自己利用flask-restful简单的写了一段代码,很渣.只是拿来做测试的.

#!/usr/bin/env python3
# coding=utf-8

from flask import Flask, request  
from flask.ext.restful import Api, Resource

app = Flask(__name__)  
api = Api(app)


code = {}

class Index(Resource):  
    def get(self):
        return "This is a demo for get_sina_code!"


class GetCode(Resource):  
    def get(self, params):
        print(len(code))
        if request.args.get('code'):
            code[params] = request.args.get('code')
            return "Success!"
        elif params in code:
            return {'code': code[params]}
        else:
            return {'error': "code not exist!"}

    def __del__(self):
        if len(code) != 0:
            code.clear()
        else:
            pass

api.add_resource(Index, '/')  
api.add_resource(GetCode, '/<string:params>')


if __name__ == '__main__':  
    app.run(debug=True)

PS:上面代码只是能用而已,拿来做测试的.

用法非常简单 在新浪后台添加回调地址: http://api.senlief.com/oauth # oauth可以随便换其他的
然后GET请求拿回code

GET http://api.senlief.com/oauth

response  
{'code': 'xxxxxxx'}

利用code换取token

参考文档

POST https://api.weibo.com/oauth2/access_token  
grant_type=authorization_code&redirect_uri=http://api.senlief.com/oauth&code=<CODE>&client_id=<app_key>&client_secret=<app_sk>  


响应:

 {
       "access_token": "ACCESS_TOKEN",
       "expires_in": 1234,
       "remind_in":"798114",
       "uid":"12341234"
 }

这样就获取到了access_token

发微博方面留坑吧

API


手机上的workflow现在可以实现了取到AK,但是不知道保存到什么地方,总不能每次都去获取新的ak,那何谈效率啊.现在想法还是复制到剪贴板,不过也比较麻烦,要实现流程化还是要做细啊.