python接入微博第三方API之2接入用户登录和微博发布

# coding=utf-8

import requests
import json
import MySQLdb
from datetime import datetime
from flask import Flask, redirect, request
app = Flask(__name__) # 全局变量token
token = {} def get_ticket():
# App Key:13866668888 app key就是url中的 YOUR_CLIENT_ID
# YOUR_REGISTERED_REDIRECT_URI就是 http://test.chinasoft.com
client_id = 13866668888
redirect_url = "http://test.chinasoft.com/a"
url = 'https://api.weibo.com/oauth2/authorize?client_id={app_key}&response_type=code&redirect_uri={redirect_url}'.format(app_key = client_id, redirect_url = redirect_url)
return url def get_token(code):
# App Secret:6dc11f2039
redirect_url = "http://test.chinasoft.com/a"
client_secret = "6dc11f2039"
client_id = 13866668888
url = "https://api.weibo.com/oauth2/access_token?client_id={client_id}&client_secret={client_secret}&grant_type=authorization_code&redirect_uri={redirect_url}&code={code}".format(client_id = client_id,client_secret = client_secret,redirect_url = redirect_url,code = code)
resp = requests.post(url)
global token
token = resp.json()
return token def get_info(access_token, uid):
url = "https://api.weibo.com/2/users/show.json"
resp = requests.get(url, params = {
'access_token':access_token,
'uid':uid
})
return resp.json() def get_conn():
""" 获取mysql的连接"""
try:
conn = MySQLdb.connect(
host="localhost",
port=3306,
user="root",
password="root",
db="user_grade",
)
except MySQLdb.Error as e:
print("Error %d:%s" % (e.args[0], e.args[1])) return conn def weibo_share(access_token):
url = "https://api.weibo.com/2/statuses/share.json"
resp = requests.post(url, {
'access_token':access_token,
'status':'现在是北京时间:{0} http://test.chinasoft.com'.format(datetime.now())
})
return resp.json() @app.route('/a')
def index():
code = request.args.get('code', None)
# 根据code获取token
token = get_token(code)
# 获取用户信息
user_info = get_info(token['access_token'], token['uid']) third_id = user_info['id']
nickname = user_info['screen_name']
headimg = user_info['profile_image_url'] # 获取数据库的连接,将用户信息存入到数据库中
# create table user(third_id int,nickname varchar(255),headimg varchar(1000));
conn = get_conn()
cur = conn.cursor()
# 注意 sql中的 values中的字段一定要加 单引号,否则会报错
sql = "insert into user(third_id,nickname,headimg) values('{third_id}','{nickname}','{headimg}')".format(third_id = third_id,nickname = nickname,headimg = headimg)
cur.execute(sql)
conn.autocommit(True) return json.dumps(user_info) @app.route('/weibo')
def weibo():
ticket = get_ticket()
return redirect(ticket) @app.route('/share')
def share():
ticket = get_ticket()
rest = weibo_share(token['access_token'])
return json.dumps(rest) if __name__ == '__main__':
app.run(port=80, debug=True)

登录api

https://open.weibo.com/wiki/Connect/login

https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

访问:http://127.0.0.1:5000/weibo

获取token

python接入微博第三方API之2接入用户登录和微博发布的更多相关文章

  1. sau交流学习社区第三方登陆github--oauth来实现用户登录

    sau交流学习社区第三方登陆github--oauth来实现用户登录 最近在丰富nodejsBlog开发的“交流学习社区”(https://www.mwcxs.top)的其他功能以及修复一些bug. ...

  2. python接入微博第三方API之1环境准备

    环境准备: 1.注册微博账号 2.注册应用

  3. python实现用户登录、注册实例

    python面向函数式编程,模拟用户登录验证.注册的代码实现. 主要有以下两个文件: 1.user.txt文档文件,相当于数据库的用户信息表,主要是记录用户名和密码. 注意:1)此文档需要与.py文件 ...

  4. 关于微博开放平台Oauth2.0接入网站应用

    关于什么是微博开放平台及微博开放平台能做什么,咱就不做搜索引擎的搬运工了 这里直接给个链接介绍:微博开放平台 本文只是抛砖引玉,讲讲微博开放平台的基本用法,适合没接触过开放平台的朋友入门学习,老鸟就略 ...

  5. PHP 接入(第三方登录)QQ 登录 OAuth2.0 过程中遇到的坑

    前言 绝大多数网站都集成了第三方登录,降低了注册门槛,增强了用户体验.最近看了看 QQ 互联上 QQ 登录的接口文档.接入 QQ 登录的一般流程是这样的:先申请开发者 -> 然后创建应用(拿到一 ...

  6. 【chrome插件】web版微信接入图灵机器人API实现自动回复

    小贱鸡自动回复API已经不可以用了,现在改良接入图灵机器人API 360chrome浏览器团队翻译了部分谷歌插件开发文档 地址:http://open.chrome.360.cn/extension_ ...

  7. 第三方平台正式支持接入微信公众平台JS-SDK

    之前微信公众平台面向开发者开放微信内网页开发工具包,现在第三方平台也能正式支持接入微信公众平台JS-SDK了,第三方平台可以在获得公众号的授权后,通过JS-SDK帮助公众号开发和实现网页业务. 公众号 ...

  8. 微博API怎么爬取其它未授权用户的微博/怎么爬取指定用户公布的微博

    获取某个用户最新发表的微博列表:http://open.weibo.com/wiki/2/statuses/user_timeline 原接口已经被封.很多人都在问怎么获取指定用户的微博,于是写这篇B ...

  9. yii2微博第三方登录

    原作者:杜文建 原博客:http://www.cnblogs.com/dwj97/p/6530568.html yii2微博第三方登录   微博登录是最常用的第三方账号登录之一.由于其网站用户量大,可 ...

随机推荐

  1. mysql启动错误:Starting MySQL.. ERROR! The server quit without updating PID file错误

    1.原因是因为 mysql-bin.0000*的文件占满系统盘,磁盘空间不足导致无法写入. 解决方法: 如果不需要二进制日志文件,二进制文件可以实现数据库复制以及即时点恢复. 查看日志在配置文件的da ...

  2. java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.Integer

    mybatis配置的jdbaType类型要是大写的,否则就会出现此种异常 原因是在xml中配置的 jdbcType中有小写字母

  3. 评估预测函数(1)---算法不能达到我们的目的时,Deciding what to try next

    在设计机器学习系统时,一些建议与指导,让我们能明白怎么选择一条最合适,最正确的道路. 当我们要开发或者要改进一个机器学习系统时,我们应该接下来做些什么? try smaller sets of fea ...

  4. Oracle 数据库中的GROUP BY与HAVING

    一.GROUP BY GROUP BY语句用来与聚合函数(aggregate functions such as COUNT, SUM, AVG, MIN, or MAX.)联合使用来得到一个或多个列 ...

  5. JavaScript倒计时并刷新页面

    //10秒倒计时效果自动补全09,08等<div id="we">10</div>s <script> window.onload = func ...

  6. SSM自测错题解析

    试题解析:spring 中bean的作用域有:singleton.session.prototype.request.global Session 试题解析:使用import导入子元素需要用prope ...

  7. ajax跨域-CORS

    CORS:跨域资源共享,是一种跨域访问的W3C标准,它允许浏览器可以跨源服务器进行请求,可以让ajax实现跨域访问.出现跨域问题的原因是浏览器同源策略导致的,协议+域名+端口三者一致被认为是同源.网站 ...

  8. Default Trace 查找日志文件快速增长的原因

    select loginname, loginsid, spid, hostname, applicationname, servername, databasename, objectname, e ...

  9. (转载) 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    这一篇是从0开始搭建SQL Server AlwaysOn 的第四篇,这一篇开始搭建异地机房节点 注意点1 注意异地节点最好至少有2个AG节点,否则在本地节点进行手动故障转移的时候会出现仲裁警告,提示 ...

  10. php自定义函数之内部函数

    内部函数,是指在函数内部又声明了一个函数. 注意事项: 1.内部函数名,不能是已存在的函数名 2.假设在函数a里面定义了一个内部函数,不能定用两次函数a. 我们下面来看代码,你将很快的学习会: < ...