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. DT二次开发之-采购页面加入好看的倒计时

    加入采购页面倒计时,个人感觉挺漂亮的,做下笔记. <span id="timer" ></span> {if $totime} <script typ ...

  2. 「NOI2012」骑行川藏

    「NOI2012」骑行川藏 题目描述 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨. 川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的 ...

  3. 结构型模式(二) 桥接模式(Bridge)

    一.动机(Motivation) 在很多游戏场景中,会有这样的情况:[装备]本身会有的自己固有的逻辑,比如枪支,会有型号的问题,同时现在很多的游戏又在不同的介质平台上运行和使用,这样就使得游戏的[装备 ...

  4. Linux iftop 安装与参数详解

    介绍 iftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能.必须以root身份才能运行. .编译安装如果采用编译安装可以到iftop官网下载最新的源码包. 安装前需要已经安装好 ...

  5. RCNN,Fast RCNN,Faster RCNN 的前生今世:(2) R- CNN (3,2,1)

    3.三次IOU  2.2次model run  1,一次深度神经网络 rcnn主要作用就是用于物体检测,就是首先通过selective search 选择2000个候选区域,这些区域中有我们需要的所对 ...

  6. MongoDB 查看集合的统计信息

    和 RDBMS 一样, MongoDB 同样存储集合的统计信息,通过调用命令 db.collection.stats() 可以方便的查看集合的统计信息. --1 查看集合 things 的统计信息 r ...

  7. CSS3新增选择器:伪元素选择器

    一.  ::first-letter 第一个字 二. ::first-line 第一行(以浏览器为准的第一行) 三. ::selection 被选中的字行(鼠标选中的字段)只能向 ::selectio ...

  8. Windows系统清除占用的串口号列表批处理

    蛋疼总是无缘无故被占用 @echo off reg query "HKLM\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" / ...

  9. SVN版本回滚实战

    天在使用SVN发布的时候不小心修改了一些不正确的东西,新增和编辑了一些错误的文件,由于文件数量比较多,并且目录复杂,不可能单个进行处理,所以想到了SVN版本回滚. 回滚本地工作目录: 1.右键工作目录 ...

  10. [WEB安全]XSS命令总结

    一:正常构造方式: 1.无过滤,直接写: <script>alert(1)</script> 2.正常截断: "> <script>alert(1) ...