开发者社区 问答 正文

android StsToken回调

<p style="box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; padding: 0px; line-height: 24px; font-family: PingFangSC, " helvetica="" neue",="" "hiragino="" sans="" gb",="" arial,="" "microsoft="" yahei="" ui",="" yahei",="" simsun,="" sans-serif;="" background-color:="" rgb(255,="" 255,="" 255);"=""><span style="color:#ff0000;">下面是文档的使用说明,需要更新token时会回调去获取新的token,  我实际使用时,每次上传图片都会走这个回调方法,有遇到这种情况的吗</span><p style="box-sizing: border-box; margin-top: 10px; margin-bottom: 10px; padding: 0px; line-height: 24px; color: rgb(51, 51, 51); font-family: PingFangSC, " helvetica="" neue",="" "hiragino="" sans="" gb",="" arial,="" "microsoft="" yahei="" ui",="" yahei",="" simsun,="" sans-serif;="" background-color:="" rgb(255,="" 255,="" 255);"="">如果您期望SDK能自动帮您管理Token的更新,那么,您需要告诉SDK如何获取Token。在SDK的应用中,您需要实现一个回调,这个回调通过您实现的方式去获取一个Federation Token(即StsToken),然后返回。SDK会利用这个Token来进行加签处理,并在需要更新时主动调用这个回调获取Token,如图示:<pre class="prettyprint linenums prettyprinted" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; padding: 10px; overflow: auto; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" font-variant-numeric:="" normal;="" font-variant-east-asian:="" font-stretch:="" line-height:="" 1.45;="" border-style:="" solid;="" border-color:="" rgb(221,="" 221,="" 221);="" background-color:="" rgb(247,="" 247,="" 247);="" border-radius:="" 3px;="" word-wrap:="" break-word;="" white-space:="" pre-wrap;="" color:="" rgb(51,="" 51,="" 51);"=""><ol class="linenums" style="box-sizing: border-box; margin: 0px; padding: 0px 0px 0px 2.5em; list-style: none; color: rgb(153, 153, 153);"><li class="L0" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal;"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="typ" style="box-sizing: border-box; color: rgb(102, 0, 102);">String</span><span class="pln" style="box-sizing: border-box;"> endpoint </span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">=</span><span class="pln" style="box-sizing: border-box;"> </span><span class="str" style="box-sizing: border-box; color: rgb(0, 136, 0);"><span class="hljs-string" style="box-sizing: border-box; color: rgb(136, 0, 0);">"http://oss-cn-hangzhou.aliyuncs.com"</span></span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">;</span></li><li class="L1" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal; background: rgb(238, 238, 238);"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""></li><li class="L2" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal;"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="typ" style="box-sizing: border-box; color: rgb(102, 0, 102);">OSSCredentialProvider</span><span class="pln" style="box-sizing: border-box;"> credentialProvider </span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">=</span><span class="pln" style="box-sizing: border-box;"> </span><span class="kwd" style="box-sizing: border-box; color: rgb(0, 0, 136);"><span class="hljs-keyword" style="box-sizing: border-box; font-weight: 700;">new</span></span><span class="pln" style="box-sizing: border-box;"> </span><span class="typ" style="box-sizing: border-box; color: rgb(102, 0, 102);">OSSFederationCredentialProvider</span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">()</span><span class="pln" style="box-sizing: border-box;"> </span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">{</span></li><li class="L3" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal; background: rgb(238, 238, 238);"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""></li><li class="L4" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal;"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="pln" style="box-sizing: border-box;">    </span><span class="lit" style="box-sizing: border-box; color: rgb(0, 102, 102);"><span class="hljs-meta" style="box-sizing: border-box;">@Override</span></span></li><li class="L5" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal; background: rgb(238, 238, 238);"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="pln" style="box-sizing: border-box;">    </span><span class="kwd" style="box-sizing: border-box; color: rgb(0, 0, 136);"><span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; font-weight: 700;">public</span></span></span><span class="pln" style="box-sizing: border-box;"><span class="hljs-function" style="box-sizing: border-box;"> </span></span><span class="typ" style="box-sizing: border-box; color: rgb(102, 0, 102);"><span class="hljs-function" style="box-sizing: border-box;">OSSFederationToken</span></span><span class="pln" style="box-sizing: border-box;"><span class="hljs-function" style="box-sizing: border-box;"> <span class="hljs-title" style="box-sizing: border-box; color: rgb(136, 0, 0); font-weight: 700;">getFederationToken</span></span></span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);"><span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-params" style="box-sizing: border-box;">()</span></span></span><span class="pln" style="box-sizing: border-box;"><span class="hljs-function" style="box-sizing: border-box;"> </span></span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">{</span></li><li class="L6" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal;"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="pln" style="box-sizing: border-box;">        </span><span class="com" style="box-sizing: border-box; color: rgb(136, 0, 0);"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(136, 136, 136);">// 您需要在这里实现获取一个FederationToken,并构造成OSSFederationToken对象返回</span></span></li><li class="L7" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal; background: rgb(238, 238, 238);"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="pln" style="box-sizing: border-box;">        </span><span class="com" style="box-sizing: border-box; color: rgb(136, 0, 0);"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(136, 136, 136);">// 如果因为某种原因获取失败,可直接返回nil</span></span></li><li class="L8" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal;"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""></li><li class="L9" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal; background: rgb(238, 238, 238);"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="pln" style="box-sizing: border-box;">        </span><span class="typ" style="box-sizing: border-box; color: rgb(102, 0, 102);">OSSFederationToken</span><span class="pln" style="box-sizing: border-box;"> </span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">*</span><span class="pln" style="box-sizing: border-box;"> token</span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">;</span></li><li class="L0" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal;"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="pln" style="box-sizing: border-box;">        </span><span class="com" style="box-sizing: border-box; color: rgb(136, 0, 0);"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(136, 136, 136);">// 下面是一些获取token的代码,比如从您的server获取</span></span></li><li class="L1" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal; background: rgb(238, 238, 238);"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="pln" style="box-sizing: border-box;">        </span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">...</span></li><li class="L2" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal;"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="pln" style="box-sizing: border-box;">        </span><span class="kwd" style="box-sizing: border-box; color: rgb(0, 0, 136);"><span class="hljs-keyword" style="box-sizing: border-box; font-weight: 700;">return</span></span><span class="pln" style="box-sizing: border-box;"> token</span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">;</span></li><li class="L3" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal; background: rgb(238, 238, 238);"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="pln" style="box-sizing: border-box;">    </span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">}</span></li><li class="L4" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal;"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">};</span></li><li class="L5" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal; background: rgb(238, 238, 238);"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""></li><li class="L6" style="box-sizing: border-box; margin: 0px; padding: 0px; list-style: decimal;"><code class="lang-java hljs" style="box-sizing: border-box; margin: 0px; padding: 0px; font-family: " yahei="" consolas="" hybrid",="" consolas,="" "meiryo="" ui",="" "malgun="" gothic",="" "segoe="" "trebuchet="" ms",="" helvetica,="" monospace,="" monospace;="" display:="" inline;="" overflow:="" initial;="" background:="" none;="" text-size-adjust:="" color:="" rgb(0,="" 0,="" 0);="" border:="" border-radius:="" 3px;="" max-width:="" line-height:="" inherit;="" word-wrap:="" normal;"=""><span class="pln" style="box-sizing: border-box;">OSS oss </span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">=</span><span class="pln" style="box-sizing: border-box;"> </span><span class="kwd" style="box-sizing: border-box; color: rgb(0, 0, 136);"><span class="hljs-keyword" style="box-sizing: border-box; font-weight: 700;">new</span></span><span class="pln" style="box-sizing: border-box;"> </span><span class="typ" style="box-sizing: border-box; color: rgb(102, 0, 102);">OSSClient</span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">(</span><span class="pln" style="box-sizing: border-box;">getApplicationContext</span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">(),</span><span class="pln" style="box-sizing: border-box;"> endpoint</span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">,</span><span class="pln" style="box-sizing: border-box;"> credentialProvider</span><span class="pun" style="box-sizing: border-box; color: rgb(102, 102, 0);">);</span></li></ol><br />

展开
收起
zmesky 2018-04-15 10:27:32 2139 分享 版权
阿里云 AI 助理回答

在您的应用场景中,每次上传图片时都会触发回调去获取新的Token,这可能是由于SDK配置中将Token的有效期设置得较短,或者存在逻辑上对每次请求都强制要求新Token的误解。根据参考资料,Token的有效性通常与时间关联,而非每次请求都需要刷新。

为了优化这一流程,确保SDK仅在Token实际过期或接近过期时才触发回调获取新Token,您可以采取以下策略:

  1. 检查Token有效期管理

    • 确认您的实现中是否正确判断了Token的有效期。应当在Token即将过期时(例如,剩余时间小于一定阈值,如5分钟),才触发回调获取新Token,而不是每次请求都调用。
  2. 调整Token有效期

    • 如果可能,适当延长Token的有效时间,减少频繁刷新的需求。但需注意不要设置得过长,以保持安全性。
  3. 优化回调逻辑

    • 在您提供的代码示例中,getFederationToken方法应包含逻辑判断Token是否确实需要刷新。可以增加检查当前Token是否有效以及其剩余有效时间的步骤。
  4. 利用SDK内置机制

    • 若所使用的SDK支持自动Token管理,请确保正确配置相关参数,让SDK自行处理Token的有效性检查和刷新逻辑,避免不必要的手动刷新操作。

通过上述策略调整,可以有效避免每次上传图片时无谓地触发Token更新回调,从而提高效率并减少不必要的网络请求。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答