このドキュメントでは、AccessKeyId と AccessKeySecret をアプ​​リに格納することなく、OSS にデータをアップロードする目的で、OssDemo などのモバイルアプリを使用し、アプリケーションサーバーにアクセスする方法について詳しく説明します。

呼び出しのロジック

  1. OssDemo は、受信した sts_server のアドレスに要求を送信します。
  2. sts_server は、AccessKeyId、AccessKeySecret、SecurityToken、および Expiration を OssDemo に返します。
  3. そのような情報を受け取ると、OssDemo は SDK を呼び出し、OssClient インスタンスを作成します。

コード

  1. EditText 制御を生成します。
    Location:
     res/layout/content_main.xml
     Content:
     <EditText
         android:layout_height="wrap_content"
         android:layout_width="0dp"
         android:layout_weight="4"
         android:id="@+id/sts_server"
         android:text="@string/sts_server"
         />
     Location:
     res/values/strings
     Content:
     <string name="sts_server">http://oss-demo.aliyuncs.com/app-server/sts.php</string>
  2. 対応する STS パラメーターのコードをアプリケーションサーバーから取得します。

    機能の実装:

    OSSFederationToken getFederationToken()
  3. STS から返されたパラメーターを取得し、OssClient コード を初期化します。

    機能の実装:

    //Initialize an OssService used for uploading and downloading.
     public OssService initOSS(String endpoint, String bucket, ImageDisplayer displayer) {
         //If you want to directly use the accessKey for access purposes, you can directly use OSSPlainTextAKSKCredentialProvider for authentication.
         //OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId, accessKeySecret);
         //Use your own class to retrieve an STSToken
         OSSCredentialProvider credentialProvider = new STSGetter(stsServer);
         ClientConfiguration conf = new ClientConfiguration();
         conf.setConnectionTimeout(15 * 1000); // Connection timeout, 15 seconds by default
         conf.setSocketTimeout(15 * 1000); // Socket timeout, 15 seconds by default
         conf.setMaxConcurrentRequest(5); // Maximum concurrent requests, 5 by default
         conf.setMaxErrorRetry(2); // Maximum error retries, 2 by default
         OSS oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider, conf);
         return new OssService(oss, bucket, displayer);
     }