新手问题 [oauth2] 淘宝卖家应用如何正确刷新 refresh_token?

geekontheway · 2012年10月14日 · 最后由 cxh116 回复于 2012年10月15日 · 10469 次阅读

目前的做法是


# encoding : utf-8 -*- 
class TaobaoAppToken < ActiveRecord::Base

    attr_accessible :access_token, :refresh_token, :last_refresh_at, :refresh_token_last_refresh_at 

    def check_or_refresh!
      refresh_token_refresh = Time.now - self.refresh_token_last_refresh_at 
      if refresh_token_refresh > 3600 #1 hours
      base_url = "https://oauth.taobao.com/token?"          
      params = { 
                  client_id: Setting.taobao_app_key,
                  client_secret: Setting.taobao_app_secret, 
                  grant_type: 'refresh_token',
                  refresh_token: self.refresh_token             
                  }.to_params       

      response = HTTParty.post(base_url + params).parsed_response
      if response['access_token'].present?
        self.update_attributes(access_token: response['access_token'], last_refresh_at: Time.now, refresh_token: response['refresh_token'], refresh_token_last_refresh_at: Time.now )
     else 
        Notifier.app_token_errors(self,response).deliver
     end     
      end   
    end 
end


每天会请求 12 次刷新,每次刷新都能获取到新的 acess_token 和 refresh_token, 但是认证一天后还是会提示 refresh_token 过期

你可以在 http://open.taobao.com/doc/detail.htm?id=118#s5 网页搜索"re_expires_in",坑爹的演示,Refresh token 过期时间为 10 秒,你看一下你的应用的返回结果是多少?也许需要手动申请加长时间

另外,不同的 API 文档里有提到过期时间不一样 http://open.taobao.com/doc/detail.htm?id=1002 ,可以加网页里面的旺旺群问问

需要 登录 后方可回复, 如果你还没有账号请 注册新账号