invalid credential, access_token is invalid or not latest hint(微信 上傳圖片返回 error)


{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [3G1y5a0106vr61!]"}

這種情況跟這個庫沒有直接關系。
請檢查一下是否有別的地方同時請求了access token,導致微信服務器發放了新的access token給別人。尤其是dev環境

 

下載到本地的文件size很小,只有100來字節,(

eyJlcnJjb2RlIjo0MDAwMSwiZXJybXNnIjoiaW52YWxpZCBjcmVkZW50aWFsLCBhY2Nlc3NfdG9rZW4gaXMgaW52YWxpZCBvciBub3QgbGF0ZXN0IGhpbnQ6IFszRzF5NWEwMTA2dnI2MSFdIn0=

方法: 

var str = "eyJlcnJjb2RlIjo0MDAwMSwiZXJybXNnIjoiaW52YWxpZCBjcmVkZW50aWFsLCBhY2Nlc3NfdG9rZW4gaXMgaW52YWxpZCBvciBub3QgbGF0ZXN0IGhpbnQ6IFszRzF5NWEwMTA2dnI2MSFdIn0=";
byte[] imageBytes = Convert.FromBase64String(str);
string str1 = System.Text.Encoding.Default.GetString(imageBytes);

轉換成字符串.

 

是JSON字符串:
  {"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [3G1y5a0106vr61!]"}
看了下錯誤code,是access_token過期。

原因: 


但是官網里說 token默認是7200秒過期,為啥那么快?結果后來百度到,如果有第二地方也請求同一個token的話,那么第一個token會在5分鍾之內過期。這也就說明了,為什么在搭建好第二個環境的時候,老環境就出現了這種問題。因為這兩個環境用的是同一個AppID和AppSecret來取得的
access_token,而這個access_token的取得並不是在服務器啟動的時候,而且是在需要調用接口的畫面初期化的時候去取得的。把取得的token放在s()全局緩存變量中,3600秒過期,方法是:

  $token = s("access_token");
  if($token){
  //重新取得token;
  }
  return $token;

所以就一直使用過期的token;一旦token過期,就無法調用js接口了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM