我们可以使用新浪微博提供的微盘API接口,开发自己的云盘应用。下面一起来看一下吧。

1.首先到新浪微盘的开发者平台上创建自己的应用,然后可以获得你的APP_KEY和APP_SECRET。

2.新浪微盘采用的是Oauth2.0的认证方式,认证过程大致如下

(1).首先你需要使用GET或POST请求https://auth.sina.com.cn/oauth2/authorize,并带上参数client_id、redirect_uri、response_type,client_id是你的App Key,redirect_uri是你的应用才通过用户授权后的回调地址,其它详细参数说明可查看API文档:http://vdisk.weibo.com/developers/index.php?module=api&action=apidoc#authorize;用浏览器请求地址的效果如下:

(2).在获得认证后,回调地址会收到Code参数,这个code我们之后请求access_token时会要使用

(3).在获得code之后,需要请求https://auth.sina.com.cn/oauth2/access_token,来获得access_token,请求的参数为:

client_id,client_secrey,grant_type,code。client_secret是你的app_secret,client_id是你的app_key,grant_type是请求的类型,这里我们填写‘authorization_code’,然后再加上刚才得到的code参数。

(4).经过第三步,会收到返回的json字符串,然后从json字符串中读取出access_token。

Python代码如下,运行这段代码会弹出浏览器,然后,用户同意授权后,将浏览器地址栏上的code参数值复制下来,输入到终端,程序继续运行,然后会打印出access_token。

auth.py

# coding=utf-8
import urllib,urllib2
import codecs
import webbrowser
import jsonappkey = '.你的key...'
appsecret = '..你的app_secret.'
redirect_uri = '.你的回调地址..'
display = 'popup'class Token():"""请用户授权,获取Token"""def __init__(self, appkey, appsecret, redirect_uri, display):self.appkey = appkeyself.appsecret = appsecretself.redirect_uri = redirect_uriself.display = displaydef getToken(self):url = ('https://auth.sina.com.cn/oauth2/authorize?client_id=%s&redirect_uri=%s&display=%s')%(self.appkey, self.redirect_uri, self.display)webbrowser.open(url)def getAccessToken(self):self.getToken()self.code = raw_input()url = 'https://auth.sina.com.cn/oauth2/access_token'params = {'client_id':self.appkey, 'client_secret':self.appsecret, 'grant_type':'authorization_code','code':self.code, 'redirect_uri':self.redirect_uri}data = urllib.urlencode(params)request = urllib2.Request(url, data)response = urllib2.urlopen(request)result = response.read()print resultm_json = json.loads(result)access_token = m_json['access_token']print access_tokenreturn access_tokena = Token(appkey, appsecret, redirect_uri, display)
a.getAccessToken()

3.通过Python代码和用户的access_token与网盘交互

新浪微盘提供了简便易用的Python API可直接使用: https://github.com/CloudSide/VdiskSDK-Python

下面这段代码,是用来实现文件的简单上传下载、查看用户信息等。

其中vdisk是新浪的API文件。

直接运行这段代码,选择一些选项即可完成一些简单的功能。

# coding=utf-8
from auth import Token
from vdisk import Clientappkey = '你的key'
appsecret = '你的secret'
redirect_uri = '你的回调地址'
display = 'popup'class client:def __init__(self, appkey, appsecret, redirect_uri, display):m_auth = Token(appkey, appsecret, redirect_uri, display)self.access_token = m_auth.getAccessToken()def getAccountInfo(self, v_client):"""功能:获取用户信息"""print v_client.account_info(self.access_token).read()def getDelta(self, v_client):"""获取用户文件和目录操作变化记录。列表每页固定为 2000 条。"""try:result = v_client.delta(self.access_token)print result.read()except:print resultdef fileops_create_folder(self, v_client):"""创建一个文件夹"""try:print "请输入文件夹的路径".decode('utf-8')path = raw_input()result = v_client.fileops_create_folder(self.access_token, path)print result.read()except Exception,e:print Exception,":",edef files_put(self, v_client):"""使用PUT方法向云盘传递文件"""try:print "请输入上传的位置:".decode('utf-8')cloudPath = raw_input()print "请输入需要上传的文件的名称及本地路径".decode('utf-8')localPath = raw_input()with open(localPath, 'rb') as content:result = v_client.files_put(self.access_token, cloudPath, content)print result.read()except Exception,e:print Exception,":",edef download_files(self, v_client):"""下载文件"""try:print "请输入云盘上文件存储的位置:".decode('utf-8')path = raw_input()data = v_client.files(self.access_token, path)print "文件下载完毕,请输入文件的保存位置".decode('utf-8')localPath = raw_input()with open(localPath, 'wb') as f:f.write(data.read())except Exception,e:print Exception,":",edef run(self):v_client = Client()v_client.setRoot('sandbox')dic = {"1":self.getAccountInfo, "2":self.getDelta, "4":self.fileops_create_folder, "5":self.files_put, "6":self.download_files}while 1:print "请输入要做的操作:".decode('utf-8')opt = raw_input()dic.get(opt)(v_client)m_client = client(appkey, appsecret, redirect_uri, display)
m_client.run()

使用Python调用新浪微盘接口,创建自己的云盘应用相关推荐

  1. 关于调用新浪支付接口

    最近公司要做一个新浪支付接口的应用. 首先你得确认已成功申请到应用appkey 及appSecret. 要想调用新浪的支付接口还得申请一个支付key.这些都准备完毕了.接下来调用新浪官方的接口 接口一 ...

  2. Android 新浪微盘API调用出现的问题

    最近在写一个关于调用网盘API的android程序,估计是自己学习android网盘的时间比较晚把,许多网盘的开放API接口都关闭了. 最后只有选择新浪微盘作为练手的网盘. 新浪微盘有比较详细的开发文 ...

  3. Python爬虫——百度+新浪微盘下载歌曲

    本篇分享将讲解如何利用Python爬虫在百度上下载新浪微盘里自己想要的歌手的歌曲,随便你喜欢的歌手! 首先我们先探索一下我们操作的步骤(以下载Westlife的歌曲为例):打开百度,输入"W ...

  4. python 微盘下载_Python爬虫——百度+新浪微盘下载歌曲

    # -*- coding: utf-8 -*- """ Created on Mon Aug 7 09:22:12 2017 @author: JClian " ...

  5. mysql新浪微盘_Android62期视频教程全集下载

    Android62期视频教程全集下载 课程介绍: 此套Android62期视频教程全集包括包括79部分的学习内容,视频和源码都有,资料比较多,下面我们就不一一做介绍了,简单的目录介绍一下,有需要学习完 ...

  6. 计算机英语缩略 微盘,新浪微盘的新反应

    新浪微盘的新反应 百度,空间,新浪,云空间,网盘,云存储,微盘, 2013-09-09 07:04:29 今天新浪微盘的微博@微盘:10T···有用伐?~我们说过,100G只是一个开始,下周,微盘君将 ...

  7. PHP实现百度、新浪的API接口调用生成短链接网址

    在实际过程中我们会有这样的场景,就是发送短信的时候,里面需要嵌入我们的网址,可是网址都是很长的. 如果你一般都是在手机上操作的话,可以在微信小程序中搜索:短链接的生成 或者在文章底部扫描小程序二维码进 ...

  8. 解决新浪微盘下载没反应下载中断

    解决新浪微盘下载没反应下载中断      最近发现,用浏览器下载新浪微盘的资料,要么点击没反应,要么下载到一般就中断,下载失败.用了好多办法都不能解决.起初以为是服务器的问题,后来发现是浏览器的问题. ...

  9. 新浪微盘项目的“病危通知”

    据来自新浪微盘官方微薄的消息, 新浪微盘将关闭对免费用户的服务. 借口是"配合监管部门专项整治行动".但知情网友透露,"监管部门"这次实际上是被"黑锅 ...

最新文章

  1. mustache语法 转自小花大方
  2. ITK:单相Chan和Vese稀疏场水平集分割
  3. python pip安装第三方库超时问题(raise ReadTimeoutError(self._pool, None, “Read timed out.“)
  4. [Nginx]用Nginx实现与应用结合的訪问控制 - 防盗链
  5. php版本最低要求:5.4_Zabbix 5.0.0beta1版本初体验
  6. mysql 字符串类型
  7. 对Servlet容器的补充
  8. java中Collections常用方法总结(包括sort,copy,reverse等)
  9. 【AI视野·今日Robot 机器人论文速览 第十六期】Tue, 29 Jun 2021
  10. [UE4]图片按钮设置技巧
  11. MPC的终结——二次规划求解约束极值问题
  12. 10M/s方法解决numpy下载太慢的问题!
  13. UWF自定义设置与命令管理
  14. webgis中等值面生成技术之-arcgis 用自带工具生成等值面并其发布成gp服务
  15. mysql 联查字段名重复_查询数据库多个字段名时的结果有重复的解决办法_MySQL
  16. 【重点】Selenium + Nightwatch 自动化测试环境搭建
  17. 如何一键修改视频画面的尺寸大小呢?
  18. 每日C语言代码(The second day)
  19. 异步加载场景与异步加载游戏资源
  20. elasticsearch查询之图书智能推荐

热门文章

  1. 运用python将数据转为refworks格式
  2. 【毕业设计】52-基于单片机的车厢智能烟雾报警器设计与仿真(原理图_仿真_配套设计文档_PPT_流程图_外文翻译)
  3. Python数据分析10——使用Matplotlib绘制3D图
  4. A Game of Thrones(22)
  5. 大疆智图的OSGB转3MX,并进Bentley的BIM平台
  6. 微软推出新版Xbox One手柄 配对更迅速
  7. 估值4000亿,超越京东,又一互联网巨头横空出世!
  8. nRF52832学习记录(二、外设之 串口)
  9. svn add 如何增加子目录下的未受控文件
  10. JaveWeb 工资管理系统