本文主要讲解OssDemo这样的移动APP如何使用应用服务器,以达到不需要在APP端存储AccessKeyId和AccessKeySecret也能向OSS上传的目的。
调用逻辑
- OssDemo在获取sts_server的地址后,发送请求。
- sts_server返回AccessKeyId、AccessKeySecret、SecurityToken、Expiration。
- OssDemo获取这些信息后,调用SDK,构建OssClient。
本文主要讲解OssDemo这样的移动APP如何使用应用服务器,以达到不需要在APP端存储AccessKeyId和AccessKeySecret也能向OSS上传的目的。
位置: res/layout/content_main.xml 内容: <EditText android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="4" android:id="@+id/sts_server" android:text="@string/sts_server" /> 位置: res/values/strings 内容: <string name="sts_server">http://oss-demo.aliyuncs.com/app-server/sts.php</string>
OSSFederationToken getFederationToken()
//初始化一个OssService用来上传下载 public OssService initOSS(String endpoint, String bucket, ImageDisplayer displayer) { //如果希望直接使用accessKey来访问的时候,可以直接使用OSSPlainTextAKSKCredentialProvider来鉴权。 //OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId, accessKeySecret); //使用自己的获取STSToken的类 OSSCredentialProvider credentialProvider = new STSGetter(stsServer); ClientConfiguration conf = new ClientConfiguration(); conf.setConnectionTimeout(15 * 1000); // 连接超时,默认15秒 conf.setSocketTimeout(15 * 1000); // socket超时,默认15秒 conf.setMaxConcurrentRequest(5); // 最大并发请求数,默认5个 conf.setMaxErrorRetry(2); // 失败后最大重试次数,默认2次 OSS oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider, conf); return new OssService(oss, bucket, displayer); }