すべてのプロダクト
Search
ドキュメントセンター

:既存のアプリサーバーを使用する

最終更新日:Feb 21, 2024

このトピックでは、アプリにAccessKey IDとAccessKeyシークレットを保存する必要がない場合に、OssDemoなどのモバイルアプリを使用して既存のアプリサーバーを介してOSSにデータをアップロードする方法について説明します。

処理ロジック

  1. OssDemoはsts_serverのアドレスを取得した後にリクエストを送信します。
  2. sts_serverは、AccessKeyId、AccessKeySecret、SecurityToken、およびExpirationを返します。
  3. 情報を取得した後、OssDemoはSDKを呼び出してOSSClientを作成します。

コード分析

  1. EditTextコントロールを生成します。
    場所:
     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> 
  2. アプリサーバーからSTSパラメーターに関連するコードを取得します。
    関数の実装:
    OSSFederationToken getFederationToken()
  3. STS応答パラメーターを呼び出してOSSClientを初期化します。
    関数の実装:
    // アップロードとダウンロードのために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); // ソケットのタイムアウト時間 (秒) 。 デフォルト値 :15
         conf.setMaxConcurrentRequest(5); // 最大同時リクエスト。 デフォルト値:5
         conf.setMaxErrorRetry(2); // 失敗後の最大再試行。 デフォルト値: 2
         OSS oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider, conf);
         return new OssService(oss, bucket, displayer);
     }