zoukankan      html  css  js  c++  java
  • 微信网页授权接口调用实例解析

    工欲善其事必先利其器,想要开始相关操作,首先要鼓捣个公众号,至于公众号怎么注册这里不多说。我们先来配置一个测试账号用于测试微信的相关接口。

    首先:登录自己的公众号后选择开发---》开发工具,如图

    其次:选择该页面公众平台测试账号,点击进入,如图:

    此时我们就获取到了测试账号的appid和appsecret,如图

    再次:往下滚动页面,找到测试号二维码,扫描关注,以便下面使用

    下面步入正题,来说说自己对微信网页授权的一些愚见

    1.经常见到的例子:

    - 某个页面在微信中可以打开,但选择在浏览器中打开时会提示请在微信中打开

    - 打开某个微信页面会弹出确认登录的页面

    2.相关知识点:

    - 网页授权接口两种scope的区别介绍

    1.snsapi_base仅可以获取用户的openid;是静默授权的

    2.snsapi_userinfo同时可以获取用户基本信息;需要用户手动同意

    - 网页授权接口调用流程解析图

    - scope为snsapi_base值时接口调用实例并获取到openid的值

    首先先要添加:授权回调页面域名:
    在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;

    这里我添加的是部署在新浪的SAE项目的网址:

    第二步编写PHP代码:

     1 <?php
     2 // 网页授权获取用户openid
     3 $code = $_GET['code'];
     4 $appId = "asdasdfasdfasdfasf";
     5 $appSecret = "asdfadsfasdfadf";
     6 $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appId}&secret={$appSecret}&code={$code}&grant_type=authorization_code";
     7 
     8 $openIdArr = json_decode(getToken($url), true);
     9 
    10 //scope为snsapi_base是获取到的openid;
    11 echo $openIdArr['openid'];
    12 
    13 function getToken($url) {
    14     $ch = curl_init();
    15     curl_setopt($ch, CURLOPT_URL, $url);
    16     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    17     curl_setopt($ch, CURLOPT_HEADER, 0);
    18     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko)");
    19     curl_setopt($ch, CURLOPT_ENCODING, "gzip");//加入gzip解析
    20     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    21     $output = curl_exec($ch);
    22     curl_close($ch);
    23 
    24     return $output;
    25 }

    第三步,将编写的代码部署到新浪SAE,我这里用的git,git的相关命令:

    1 git init
    2 git remote add sae https://git.sinacloud.com/newapp
    4 git add .
    6 $ git commit -m"xxx"
    8 $ git push sae master:1

    第四步,通过自己的微信账号(要关注哦,要不没法接收信息)给自己发送消息
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

    链接中的APPID写测试账号的就行,REDIRECT_URI:写自己部署的文件的网址,我这里是新浪SAE的网址:http://xxx.applinzi.com/url-openid.php(url-openid.php就是上面我写代码的文件用git推送到网上的地址),SCOPE:snsapi_base

    当微信收到咱们发送的消息时,进入点击收到的链接,就会跳转页面,页面跳转完成后,页面会输出获取到的openid,如果获取不到,请仔细检查上面的操作步骤是否有误。

    - scope为snsapi_userinfo值时接口调用实例并获取用户基本信息

    操作基本和上面一样,只是把第四步发送的url中的SCOPE替换为snsapi_userinfo

    代码:

     1 <?php
     2 // 网页授权获取用户openid
     3 $code = $_GET['code'];
     4 $appId = "asdsadfasdfasdfasdf";
     5 $appSecret = "asdfasdfasdfasdfasdfasdf";
     6 $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appId}&secret={$appSecret}&code={$code}&grant_type=authorization_code";
     7 
     8 $openIdArr = json_decode(getToken($url), true);
     9 
    10 $token = $openIdArr['access_token'];
    11 $openId = $openIdArr['openid'];
    12 
    13 $url_userInfo = "https://api.weixin.qq.com/sns/userinfo?access_token={$token}&openid={$openId}&lang=zh_CN";
    14 
    15 $userInfoArr = (array)json_decode(getToken($url_userInfo));
    16 
    17 // print_r($userInfoArr);
    18 
    19 //输出用户的昵称、省份、城市
    20 echo $userInfoArr['nickname']."<br/>".$userInfoArr['province']."<br/>".$userInfoArr['city'];
    21 
    22 
    23 function getToken($url) {
    24     $ch = curl_init();
    25     curl_setopt($ch, CURLOPT_URL, $url);
    26     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    27     curl_setopt($ch, CURLOPT_HEADER, 0);
    28     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko)");
    29     curl_setopt($ch, CURLOPT_ENCODING, "gzip");//加入gzip解析
    30     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    31     $output = curl_exec($ch);
    32     curl_close($ch);
    33 
    34     return $output;
    35 }
  • 相关阅读:
    符号运算·
    笔记1
    Linux
    三数比较
    JavaScript变量,作用域和内存
    在HTML中使用JavaScript
    JavaScript基本概念
    JavaScript简介
    上机考试反思与总结
    计算机科学与技术学习方法
  • 原文地址:https://www.cnblogs.com/fangfeiyue/p/7417617.html
Copyright © 2011-2022 走看看