首先我確定我的公眾號是認證的服務號,而且已經設定了與當前訪問的網域名稱一樣的公眾號授權網域名稱,而且授權的方式是出現提示框的那種(即可擷取使用者資訊的)而非靜默授權。
我的開發流程:
1、調用介面http://open.weixin.qq.com/connect/oauth2/authorize?appid=公眾號APPID&redirect_uri=我的地址&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect ,並成功擷取code。
2、利用code擷取access_token,調用https://api.weixin.qq.com/sns/oauth2/access_token?appid=公眾號APPID&secret=公眾號APPSECRET&code=CODE&grant_type=authorization_code,並成功擷取access_token,refresh_token,openid等資料
3、利用上面獲得的access_token擷取使用者https://api.weixin.qq.com/cgi-bin/user/info?access_token=上面擷取的access_token&openid=上面擷取的openid&lang=zh_CN,但這裡擷取到的資訊是錯誤的資訊,errcode是40001,errmsg:invalid credential,access_token is invalid or not latest hint:[25XmA020.....]。
步驟看上去像是正確的,為什麼通過授權的access_token都不能擷取到使用者資訊?我可是一擷取到access_token馬上用來擷取使用者資訊的,應該不會是access_token逾時的原因啊。哪位大神知道是什麼問題?
回複內容:
首先我確定我的公眾號是認證的服務號,而且已經設定了與當前訪問的網域名稱一樣的公眾號授權網域名稱,而且授權的方式是出現提示框的那種(即可擷取使用者資訊的)而非靜默授權。
我的開發流程:
1、調用介面http://open.weixin.qq.com/connect/oauth2/authorize?appid=公眾號APPID&redirect_uri=我的地址&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect ,並成功擷取code。
2、利用code擷取access_token,調用https://api.weixin.qq.com/sns/oauth2/access_token?appid=公眾號APPID&secret=公眾號APPSECRET&code=CODE&grant_type=authorization_code,並成功擷取access_token,refresh_token,openid等資料
3、利用上面獲得的access_token擷取使用者https://api.weixin.qq.com/cgi-bin/user/info?access_token=上面擷取的access_token&openid=上面擷取的openid&lang=zh_CN,但這裡擷取到的資訊是錯誤的資訊,errcode是40001,errmsg:invalid credential,access_token is invalid or not latest hint:[25XmA020.....]。
步驟看上去像是正確的,為什麼通過授權的access_token都不能擷取到使用者資訊?我可是一擷取到access_token馬上用來擷取使用者資訊的,應該不會是access_token逾時的原因啊。哪位大神知道是什麼問題?
擷取使用者資訊的介面需要進行認證
你報的這個錯誤應該是access_token失效導致的,是不是用什麼緩衝來儲存access_token了,那樣的話,建議先清空下緩衝再試試。http://www.weixin.com
我再強調一遍,網頁授權擷取使用者資訊的介面是
http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
而不是
http://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html
網頁授權的 AccessToken 和擷取使用者資訊的 AccessToken 不是一個東西。
也就是你上面的第 3 步的介面地址應是
https://api.weixin.qq.com/sns/userinfo
而不是
https://api.weixin.qq.com/cgi-bin/user/info
參考:https://github.com/thenbsp/wechat
10/6 更新
真不知道踩的人是什麼心理,也不知道踩的人有沒有仔細查看管方文檔,如果覺得我的回答不對,請站指出錯誤,謝謝!
access_token自己緩衝下,你用了一個過時的
明明expiredate是7200秒,但是沒到2小時accesstoken就到期了,有什麼辦法去判斷accesstoken到期呢