微信訂閱號經過獲取Openid並獲取用戶基本信息

咱們知道,服務號有獲取用戶基本信息的接口,經過oauth2.0網頁受權獲取的。可是認證的訂閱號也有獲取用戶基本信息的接口了,可是與服務號不一樣的是,這個須要用戶主動觸發才能夠得到,須要用戶發送任意關鍵詞或者點擊菜單。php

clipboard.png

一、先獲取openid,用戶主動觸發,得到openid
二、獲取access_token
三、經過這兩個獲取用戶基本信息,頭像,暱稱等api

接口調用請求說明
http請求方式: GET
https://api.weixin.qq.com/cgi...服務器

一、獲取openid
先在基本配置服務器地址填寫下面php文件路徑,其中php文件須要修改token微信

cheeck.phpapp

<?php
define("TOKEN", "xiao");
//用於回覆用戶消息
function responseMsg(){
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    if (!empty($postStr)){
        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $fromUsername = $postObj->FromUserName;
        $toUsername = $postObj->ToUserName;
        $MsgT = $postObj->MsgType;
        $time = time();
        //若是用戶發的text類型
        if($MsgT=="text"){
            $key = trim($postObj->Content);
            $fromUsername = $postObj->FromUserName;
            $textTpl = "<xml>
                        <ToUserName><![CDATA[%s]]></ToUserName>
                        <FromUserName><![CDATA[%s]]></FromUserName>
                        <CreateTime>%s</CreateTime>
                        <MsgType><![CDATA[%s]]></MsgType>
                        <Content><![CDATA[%s]]></Content>
                        </xml>"; 
            $msgType = "text";
            $contentStr = "openid是:".$fromUsername;
            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
            echo $resultStr;
            exit;
        }

        //若是用戶發的event(事件)類型
        if($MsgT=="event"){
            $Event = $postObj->Event;
            if ($Event==subscribe) {
               $contentStr = "歡迎關注";
            }else{
                $contentStr = "但願您下次關注,但您收不到此條消息了";
            }

            $textTpl = "<xml>
                        <ToUserName><![CDATA[%s]]></ToUserName>
                        <FromUserName><![CDATA[%s]]></FromUserName>
                        <CreateTime>%s</CreateTime>
                        <MsgType><![CDATA[%s]]></MsgType>
                        <Content><![CDATA[%s]]></Content>
                        </xml>"; 
            $Title = $postObj->Title;
            $Description = $postObj->Description;
            $Url = $postObj->Url;
            $msgType = 'text';
            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
            echo $resultStr;
            exit;
        }
    }else{
            echo "";
            exit;
    }
}

    $echoStr = $_GET["echostr"];
    //若是有$echoStr說明是對接
    if (!empty($echoStr)) {
        //對接規則
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );
        if( $tmpStr == $signature ){
            echo $echoStr;
        }else{
            echo "";
            exit;
        }
    }else{
        responseMsg();
    }
?>

clipboard.png

而後去公衆號回覆任意關鍵詞便可。post

clipboard.png

openid拿到了,該去拿access_token了
也很容易。接口是:學習

https://api.weixin.qq.com/cgi...spa

把上面這兩個參數(appid=修改,secret=修改)改爲你公衆號的便可,而後打開公衆號基本配置,ip白名單,而後就能夠正常獲取access_token了。code

clipboard.png

那麼最後一步,就是獲取用戶基本信息了。xml

接口調用請求說明
http請求方式: GET
https://api.weixin.qq.com/cgi...

把上面兩個值加上去,訪問這個連接便可。

clipboard.png

學習交流微信:face6009

相關文章
相關標籤/搜索