当前位置:Gxlcms > PHP教程 > 微信公众号调取用户信息,遇到invalidcode的问题

微信公众号调取用户信息,遇到invalidcode的问题

时间:2021-07-01 10:21:17 帮助过:83人阅读

使用了php,php部分如下:

  1. <code>$code = $_GET["code"];
  2. $userinfo = getUserInfo($code);
  3. function getUserInfo($code)
  4. {
  5. $appid = "1111111111";
  6. $appsecret = "1111111111111";//appid和appsecret在这里隐去,在源代码中是正确的
  7. $access_token = "";
  8. //Get access_token
  9. $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
  10. $access_token_json = https_request($access_token_url);
  11. $access_token_array = json_decode($access_token_json,true);
  12. $access_token = $access_token_array['access_token'];
  13. $openid = $access_token_array['openid'];
  14. //Get user info
  15. $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid";
  16. $userinfo_json = https_request($access_token_url);
  17. $userinfo_array = json_decode($userinfo_json,ture);
  18. echo $userinfo_json;
  19. return userinfo_array;
  20. }
  21. function https_request($url)
  22. {
  23. $curl = curl_init();
  24. curl_setopt($curl, CURLOPT_URL, $url);
  25. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  26. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  27. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  28. $data = curl_exec($curl);
  29. if (curl_errno($curl)){
  30. return 'ERROR'.curl_error($curl);
  31. }
  32. curl_close($curl);
  33. return $data;
  34. }
  35. </code>

然后现在出现的问题就是,调userinfo_json时出现了问题,导致了最后结果无法显示。
中间过程把userinfo_json输出时,提示{"errcode":40029,"errmsg":"invalid code"}

而如果我把userinfo_url的链接复制下来在手机打开的话,还是能调用到用户的详细资料

所以问题到底出现在了哪里?有什么解决办法?求大神解答

回复内容:

使用了php,php部分如下:

  1. <code>$code = $_GET["code"];
  2. $userinfo = getUserInfo($code);
  3. function getUserInfo($code)
  4. {
  5. $appid = "1111111111";
  6. $appsecret = "1111111111111";//appid和appsecret在这里隐去,在源代码中是正确的
  7. $access_token = "";
  8. //Get access_token
  9. $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
  10. $access_token_json = https_request($access_token_url);
  11. $access_token_array = json_decode($access_token_json,true);
  12. $access_token = $access_token_array['access_token'];
  13. $openid = $access_token_array['openid'];
  14. //Get user info
  15. $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid";
  16. $userinfo_json = https_request($access_token_url);
  17. $userinfo_array = json_decode($userinfo_json,ture);
  18. echo $userinfo_json;
  19. return userinfo_array;
  20. }
  21. function https_request($url)
  22. {
  23. $curl = curl_init();
  24. curl_setopt($curl, CURLOPT_URL, $url);
  25. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  26. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  27. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  28. $data = curl_exec($curl);
  29. if (curl_errno($curl)){
  30. return 'ERROR'.curl_error($curl);
  31. }
  32. curl_close($curl);
  33. return $data;
  34. }
  35. </code>

然后现在出现的问题就是,调userinfo_json时出现了问题,导致了最后结果无法显示。
中间过程把userinfo_json输出时,提示{"errcode":40029,"errmsg":"invalid code"}

而如果我把userinfo_url的链接复制下来在手机打开的话,还是能调用到用户的详细资料

所以问题到底出现在了哪里?有什么解决办法?求大神解答

http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

先好好看看文档吧,这个问题有点大。。

你的这里是写错了吧!
$userinfo_json = https_request($access_token_url);
应该是
$userinfo_json = https_request($userinfo_url);

这样导致code用了两次,code只允许用一次,5分钟内有效

再说一次:code 只能使用一次,不能刷新

https://github.com/thenbsp/wechat

人气教程排行