微信公众号开发

最近在研究微信开发
我觉得要多看官方文档:

        $postStr=file_get_contents("php://input");
        file_put_contents('./data.txt',$postStr);
        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $fromUsername =$postObj->FromUserName;//自己
        $toUsername = $postObj->ToUserName;//别人
        $keyword = trim($postObj->Content);

        // echo '<xml>
        // <ToUserName><![CDATA['.$fromUsername.']]></ToUserName>
        // <FromUserName><![CDATA['.$toUsername.']]></FromUserName>
        // <CreateTime><![CDATA['.time().']]></CreateTime>
        // <MsgType><![CDATA[text]]></MsgType>
        // <Content><![CDATA[哈哈哈哈哈哈哈哈哈哈]]></Content>
        // </xml>';
        //上面就可以被动回复文字内容,文字内容是不需要token的



        echo '<xml>
        <ToUserName><![CDATA['.$fromUsername.']]></ToUserName>
        <FromUserName><![CDATA['.$toUsername.']]></FromUserName>
        <CreateTime><![CDATA['.time().']]></CreateTime>
        <MsgType><![CDATA[image]]></MsgType>
        <Image><MediaId><![CDATA[Moh96m_dS9AJazdceG_p1H3GxpIJ1ZtDEuBe78FMLvCYbihJBTAhYt6Z2CYHrdzN]]></MediaId></Image>
        </xml>';//媒体图片信息的话需要token
首先要先获取媒体信息:
$tokenUrl='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxb372451ad68470d8&secret=72d155aac0f2518a7f05b42f3f0ea479';
 
    //    $res=WeChatToken($tokenUrl);

    //     $data=json_decode($res,true);
    //    $token=$data['access_token'];
    //     $url='https://api.weixin.qq.com/cgi-bin/media/upload?access_token='.$token.'&type=image';
    //     $d['media']=new CURLFile($_SERVER['DOCUMENT_ROOT'].'/images/touxiang.jpg');

    //     $res=WeChatUrl($url,$d);
    //     echo $res;



function  WeChatToken( $url){
     $ch= curl_init( $url);
     curl_setopt( $ch,CURLOPT_RETURNTRANSFER, 1);
      $res= curl_exec( $ch);
      return  $res;

} //获取access_token


//声明函数来发送post请求
function  WeChatUrl( $url, $data){
         //初始化curl
         $ch =  curl_init( $url);
         //设置选项
         curl_setopt( $ch, CURLOPT_RETURNTRANSFER,  1);
         curl_setopt( $ch, CURLOPT_POST,  1);
         curl_setopt( $ch, CURLOPT_POSTFIELDS,  $data);
         curl_setopt( $ch, CURLOPT_TIMEOUT,  10);
         //执行发送
         $res =  curl_exec( $ch);
         //返回结果
         return  $res;

}

在来说说获取个人基本信息,这个很实用!!!

填写授权回调页面的域名

登录公众平台-->开发者中心-->接口权限表

找到 网页授权获取用户基本信息  然后修改-->填写你的域名.如下:

前面不要加http和https,直接是域名网站地址

关于网页授权的两种scope的区别说明(官方)

1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

因为scope有两中模式,所以下面分开解说:

scopesnsapi_base 那么用户必须是关注了公众号才能取得信息

index.php如下:

public  function  indexAction(){
//scope=snsapi_base 实例
$appid= '你的AppId';
$redirect_uri =  urlencode (  'http://你的域名/getUserInfo.php' );
$url= "https://open.weixin.qq.com/connect/oauth2/authorize?appid= $appid &redirect_uri= $redirect_uri &response_type=code&scope=snsapi_base&state=1#wechat_redirect";
header( "Location:". $url);

}
getUserInfo.php

public  function  TokenAction(){
$appid =  "你的AppId";  
$secret =  "你的AppSecret";  
$code =  $_GET[ "code"];
//第一步:取全局access_token
$url =  "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid= $appid &secret= $secret ";
$token = getJson( $url);
//第二步:取得openid
$oauth2Url =  "https://api.weixin.qq.com/sns/oauth2/access_token?appid= $appid &secret= $secret &code= $code &grant_type=authorization_code";
$oauth2 = getJson( $oauth2Url);
//第三步:根据全局access_token和openid查询用户信息  
$access_token =  $token[ "access_token"];  
$openid =  $oauth2[ 'openid'];  
$get_user_info_url =  "https://api.weixin.qq.com/cgi-bin/user/info?access_token= $access_token &openid= $openid &lang=zh_CN";
$userinfo = getJson( $get_user_info_url); 
//打印用户信息
print_r( $userinfo);
function  getJson( $url){
     $ch =  curl_init();
     curl_setopt( $ch, CURLOPT_URL,  $url);
     curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER,  FALSE); 
     curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST,  FALSE); 
     curl_setopt( $ch, CURLOPT_RETURNTRANSFER,  1);
     $output =  curl_exec( $ch);
     curl_close( $ch);
     return  json_decode( $outputtrue);
}

上面是不需要授权的,直接进入就可以获取用户信息!!!!

scopesnsapi_userinfo 用户不用关注公众号,也能取到信息,但是会有一个界面让用户去点击确认!相当于一个登录授权吧!

代码实例

index.php如下:

     public  function  indexAction(){
     $appid= '*********';
     $redirect_uri =  urlencode (  'http://******Token/Token' );
     $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid= $appid &redirect_uri= $redirect_uri &response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
     header( "Location:". $url);
    }

getUserInfo.php

     public  function  TokenAction(){
     $appid =  "***********";
     $secret =  "**********";
     $code =  $_GET[ "code"];
     //第一步:取得openid
$oauth2Url= "https://api.weixin.qq.com/sns/oauth2/access_token?appid= $appid &secret= $secret &code= $code &grant_type=authorization_code";
     $oauth2 = getJson( $oauth2Url);

     //取得access_token
     $url =  "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid= $appid &secret= $secret ";
     $token = getJson( $url);

     //第二步:根据全局access_token和openid查询用户信息
     $access_token =  $token[ "access_token"];
     $openid =  $oauth2[ 'openid'];
$get_user_info_url  =  "https://api.weixin.qq.com/cgi-bin/user/info?access_token= $access_token &openid= $openid &lang=zh_CN" ;
     $userinfo = getJson( $get_user_info_url);
     //打印用户信息
     print_r( $userinfo);
    }

就ok了




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值