code学习

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

这是一个移动互联的时代。手机app上传的数据会越来越多。把数据存储的问题交给oss, 让开发者能更加专注于自己的应用逻辑。

那么怎么样基于oss构建一个app存储系统呢?

本教程就是让你在30分钟内搭建一个基于oss的移动应用数据直传服务,所谓直传就是移动应用的数据的上传和下载直接直连oss,只有控制流走用户自己的服务器。

安全的上传下载方式(临时,灵活的赋权鉴权),

成本低(这样用户不需要准备很多服务器,因为移动应用直联云存储,只有控制流走用户自己的应用服务器。)

高并发,支持海量用户(oss有海量的上传和下载带宽)

弹性(oss有无限扩容的存储空间)

方便(可以方便的对接到媒体转码服务-视频多端适配,图片处理服务,cdn加速下载等)

本教程就是让你在30分钟内搭建一个基于oss的移动应用数据直传服务

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

详细可以参考这里

android/ios 应用。即最终用户手机上的app;

oss,即阿里云对象存储,负责存储app上传的数据,可以参考官网http://www.aliyun.com/product/oss;

ram/sts负责生成临时上传凭证

用户应用服务器,即提供该android/ios应用的开发者开发的app后台服务,管理app上传和下载的token. 甚至是用户在app上传数据元数据信息。

android/ios应用不可能直接存储accesskeyid/accesskeysecret,这样会存在泄密的风险。所以应用必须向用户的应用服务器申请一个临时上传凭证(注意下文将此临时上传凭证称为token),注意这个token是有时效性的,如这个token的过期时间是30分钟(这个时间可以由应用服务器指定),那么在该android/ios应用在这30分钟里面,使用这个token可以从oss上传和下载数据, 30分钟后再重新获取。

用户的应用服务器检测上述请求的合法性,然后返回token给应用。

手机拿到这个token后就可以将数据上传到oss,或者从oss下载数据了。

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

应用服务器如何生成这个token,蓝色方框

android/ios应用如何取token,红色方框

本教程实现了一个app,如下,大家可以扫描二维码,安装一下示例app程序,这上工具是用android开发。 但是本教程的应用服务器搭建也适用于ios, 即上述图蓝色的框的内容。

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

示例程序的最终效果图如下:

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

应用服务器:该移动应用对应的后台应用服务器。本教程搭建了一个后台应用服务器:http://oss-demo.aliyuncs.com/app-server/sts.php

上传bucket,指的是该移动应用要把数据上传到哪个bucket

区域:指的第二步指定的bucket对应的区域。

我必须开通了oss,并且创建了bucket, 在这个例子里面的,对应的bucket是 :sdk-demo

我必须开通sts服务。开通sts服务其实是为了如何生成上述所描述的token

我必须搭建这样一个应用服务器。这在个事例里面,我搭建的应用服务器的地址是:http://oss-demo.aliyuncs.com/app-server/sts.php .

注意这个例子本教程是采用php编写的,但是事实上,用户可以选择自己喜欢的语言进行编写,如java 、python、 go、ruby、node.js、c#等编写

如果已经有bucket可以忽略这一步, 如果没有bucket,创建bucket参考官网

第二步操作,开通sts,可以参考 如下:

(1)要开通sts服务,首先oss登陆官网控制台

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

(2)登录管理控制台,点击:安全令牌快捷配置

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

(3)会进入到令牌快捷配置页面,注意如果没有开通ram,会弹出开通的对话框。直接点开通,这个要求实名验证。 做完后跳到本页面。点击开始授权

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

(4)点击开始授权后,系统会进行自动授权,请千万保存如下图框住的三个参数

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

点击保存ak信息后,对话框会关闭。保存好下面标红的结果3.

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

保存这三个参数后。到这一步,sts的开通已经完成了。

注意如果您之前已经点击这个页面创建了accesskeyid/accesskeysecrte, 弹出的页面如下:

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

点击如下图所示的查看

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

点击如下图所示的创建accesskey

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

记下如下参数1,2

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

并记下如下参数3:

OSS移动开发实战1 (30分钟快速搭建基于OSS的移动应用)30分钟快速搭建移动应用直传服务

为了方便大家开发。 本教程准备了三个语言的版本示例程序 (java、php、ruby)

php: 下载地址

java: 下载地址

ruby: 下载地址

每个语言包下载下来后,都会有一个配置文件config.json

如下例:

下面对配置进行讲解。

accesskeyid填写上述图标红的1的内容,即用户自己在全

accesskeysecret填写上述图片标红2的内容

rolearn 填写上述图标红3的内容

tokenexpiretime 指android/ios应用取到这个token的失效时间,注意,最少是900s, 默认值可以不修改,

policyfile: 填写的是该该token所要拥有的权限列表的文件, 默认值可以不改

本教程准备了三种最常用token 权限文件,放于policy目录下面。分别是

all_policy.txt : 指定了该token拥有对该帐号下,创建bucket、删除bucket、上传文件、下载文件、删除文件的权限 。

bucket_read_policy.txt : 指定了该token拥有该帐号下,对指定bucket的权限。

bucket_read_write_policy.txt: 指定了该token拥有该帐号下,对指定bucket的权限。

如果你想要指定这个token只能对指定的bucket有读写权限, 请把(bucket_read_policy.txt、 bucket_read_write_policy.txt)这个文件里面$bucket_name直接替换成指定的bucket名字。

返回的格式解析 。

status:表示获取token的状态,获取成功时,返回值是200

accesskeyid: 表示android/ios应用初始化ossclient获取的 accesskeyid

accesskeysecret: 表示android/ios应用初始化ossclient获取accesskeysecret

securitytoken:表示android/ios应用初始化的token

expiration: 表示该token失效的时间。主要在android sdk会自动判断是否失效,自动获取token

注意上述这四个变量将构成了一个token。

对于php版本

对于java版本 (依赖于java 1.7)

下面讲解一下如何 利用android/ios sdk跟自己的应用服务器,请求token

android版本

ios版本

具体app从就应用服务器取token方法,必须写到public ossfederationtoken getfederationtoken() { } 这个函数里面。

注意这个函数的逻辑依赖于可以自己设定,但是最终结果必须返回这样一个变量 return new ossfederationtoken(ak, sk, token, expiration);

其中ak, sk, token, expiration 必须是从应用服务器返回的body获取的。

在本例子里,示例如下,注意用户可以自定义自己的移动应用跟自己应用服务器之前的协议。

该android示例程序的源码下载地址

该ios示例程序的源码下载地址

继续阅读