• 微信授权


    1、配置授权回调页面域名,如 www.aaa.com

    2、模拟公众号的第三方网页,fn_system.php

    Php代码  收藏代码
    1. <?php  
    2.   
    3. if(emptyempty($_SESSION['user'])){  
    4.       
    5.     header("Location:http://www.aaa.com/uc/fn_wx_login.php");  
    6. }else{  
    7.     print_r($_SESSION['user']);  
    8. }  
    9.   
    10. ?>  

    3、访问第三方网页时,如果检查session中不存在会话信息,则跳转至登陆页,fn_wx_login.php

    Php代码  收藏代码
    1. <?php  
    2.   
    3.     $appid = "公众号在微信的appid";  
    4.     $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri=http%3a%2f%2fwww.aaa.com%2fuc%2ffn_callback.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';  
    5.     header("Location:".$url);  
    6.   
    7. ?>  

    4、在登陆页组装appid,回跳url等信息,然后跳转至微信的用户授权页。

    5、在微信的用户授权页,如果用户选择了“同意授权”,则微信重新回跳至第三方网页的回跳地址时,会附带上code参数。

    6、第三方网页的回跳url中,首先从请求中取得code,然后根据code进一步换取openid和access_token,然后就可以根据openid和access_token调用微信的相关接口查询用户信息了。

    Php代码  收藏代码
    1. <?php  
    2.   
    3. $appid = "公众号在微信的appid";  
    4. $secret = "公众号在微信的app secret";  
    5. $code = $_GET["code"];  
    6. $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';  
    7.   
    8. $ch = curl_init();  
    9. curl_setopt($ch,CURLOPT_URL,$get_token_url);  
    10. curl_setopt($ch,CURLOPT_HEADER,0);  
    11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );  
    12. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);  
    13. $res = curl_exec($ch);  
    14. curl_close($ch);  
    15. $json_obj = json_decode($res,true);  
    16.   
    17. //根据openid和access_token查询用户信息  
    18. $access_token = $json_obj['access_token'];  
    19. $openid = $json_obj['openid'];  
    20. $get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';  
    21.   
    22. $ch = curl_init();  
    23. curl_setopt($ch,CURLOPT_URL,$get_user_info_url);  
    24. curl_setopt($ch,CURLOPT_HEADER,0);  
    25. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );  
    26. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);  
    27. $res = curl_exec($ch);  
    28. curl_close($ch);  
    29.   
    30. //解析json  
    31. $user_obj = json_decode($res,true);  
    32. $_SESSION['user'] = $user_obj;  
    33. print_r($user_obj);  
    34.   
    35. ?>  
    36. 转自:http://huangqiqing123.iteye.com/blog/2005770
  • 相关阅读:
    机器人的运动范围
    矩阵中的路径
    MySql数据库表的基本连接
    Java虚拟机垃圾收集算法
    spring_boot 配置
    js 表格合并单元格
    js数组操作
    前端定位Position属性四个值
    form表单在发送到服务器时候编码方式
    多文件上传CommonsMultipartResolver
  • 原文地址:https://www.cnblogs.com/liuwenbohhh/p/4548610.html
Copyright © 2020-2023  润新知