{"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接口了。