溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php+微信接口開(kāi)發(fā)的微信分銷平臺(tái)拆分講解(一)微信oauth2接口

發(fā)布時(shí)間:2020-06-17 19:02:00 來(lái)源:網(wǎng)絡(luò) 閱讀:636 作者:hohohahei 欄目:web開(kāi)發(fā)

本文不提供整套系統(tǒng)源碼,只會(huì)開(kāi)放部分源碼,講訴開(kāi)發(fā)的經(jīng)歷、思路、問(wèn)題解答,希望對(duì)新手有幫助,至于高手和大神一下而過(guò)或留下寶貴意見(jiàn)在此謝過(guò)。



廢話不多說(shuō)了開(kāi)始進(jìn)入正題。

基礎(chǔ)篇

php當(dāng)前主流WEB開(kāi)發(fā)語(yǔ)言毋庸置疑不用多說(shuō)。微信接口主要用到微信授權(quán)登錄接口、微信JSSDK分享接口、微信支付接口,對(duì)于微信的一系列接口必須要牢騷一下到處是坑啊。分銷系統(tǒng)是一種營(yíng)銷模式以后會(huì)解釋。首先說(shuō)一下第一步微信登錄(oauth3第三方授權(quán)接口),個(gè)人認(rèn)為比較重要的一部,優(yōu)點(diǎn)用戶體驗(yàn)高、安全性高、為后邊做分銷系統(tǒng)打下便利的基礎(chǔ),缺點(diǎn)只能在微信內(nèi)置瀏覽器中訪問(wèn)對(duì)于微信外其他方式宣傳推廣不便利,只能用二維碼的方式(生成鏈接形式的二維碼網(wǎng)上第三方工具很多,也可以用程序來(lái)實(shí)現(xiàn),有興趣可以留言)。

 

首先看一下傳說(shuō)中的微信API接口文檔吧,官網(wǎng)文檔地址http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

php+微信接口開(kāi)發(fā)的微信分銷平臺(tái)拆分講解(一)微信oauth2接口



用該接口必須需要一個(gè)認(rèn)證的服務(wù)號(hào)、沒(méi)有的情況下可以申請(qǐng)一個(gè)測(cè)試賬號(hào)體驗(yàn)一下但不能宣傳推廣

關(guān)于網(wǎng)頁(yè)授權(quán)回調(diào)域名的說(shuō)明

文檔寫(xiě)的比較清楚,在不用第三方平臺(tái)的情況下,需要配置一下項(xiàng)目需要獲取微信用戶信息的路徑,一二.....級(jí)域名都可以。這個(gè)比較明朗

再往下看第一遍沒(méi)看懂,第二遍沒(méi)看懂。。。。。。項(xiàng)目是一年前開(kāi)始開(kāi)發(fā)的當(dāng)時(shí)的文檔比現(xiàn)在還簡(jiǎn)陋而且網(wǎng)上可參考的資料很少官方?jīng)]有實(shí)例,還好最后從一篇文章找到蛛絲馬跡算是做出來(lái)了,牢騷一下

 

其他說(shuō)明

先介紹幾個(gè)參數(shù)appid和appsecret在微信公眾平臺(tái)中可以找到很多接口的調(diào)用都會(huì)用到這兩個(gè)參數(shù)。

最重要的一個(gè)參數(shù)也是調(diào)用授權(quán)接口的目的,openid,它是一個(gè)微信號(hào)對(duì)應(yīng)該公眾平臺(tái)的唯一標(biāo)示,獲取到它就可以認(rèn)為用戶已經(jīng)微信登錄了,后邊一切業(yè)務(wù)流程和數(shù)據(jù)庫(kù)記錄都是圍繞它來(lái)建立的。

下面說(shuō)說(shuō)如何獲取openid和用戶基本信息比如頭像昵稱城市性別等,這是一個(gè)比較蛋疼的過(guò)程,這么多步驟玩我們呢是吧?給你找個(gè)理由是為了安全性考慮吧。我又發(fā)牢騷了不好意思。

分三步

1獲取code,啥是code???不知道反正獲取到它才能進(jìn)行下一步

接口地址:https://open.weixin.qq.com/connect/oauth3/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redire

appid剛才提高過(guò)在公眾平臺(tái)里可以找到,redirect_uri是重點(diǎn)它是再用戶通過(guò)上述的接口地址發(fā)出請(qǐng)求到微信的服務(wù)器,微信服務(wù)器通過(guò)GET方式傳遞一個(gè)參數(shù)code返回到redirect_uri,$_GET方式接受一下就可以。scope也是個(gè)比較重要的參數(shù)他有兩種類型snsapi_base、snsapi_userinfo,說(shuō)說(shuō)區(qū)別如果只想實(shí)現(xiàn)微信登錄也就是只需要openid那么使用snsapi_base,它的好處是用戶在訪問(wèn)時(shí)并不知曉你抓取了他的openid。使用snsapi_userinfo除了可以抓取openid以外,還能抓取到更多很多微信用戶信息,現(xiàn)在很多微信應(yīng)用都需要頭像和昵稱那么直能使用snsapi_userinfo,缺點(diǎn)為會(huì)首先彈出微信授權(quán)是否允許的頁(yè)面需經(jīng)過(guò)用戶同意才可以進(jìn)行下一步的操作

如圖:

 

2.獲取openidaccess_token

通過(guò)剛才獲取到的code以及appidappsecret

接口:https://api.weixin.qq.com/sns/oauth3/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

返回的是json格式的數(shù)據(jù)

 

3獲取頭像昵稱等...

通過(guò)openidaccess_token

接口:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

返回的是json格式的數(shù)據(jù)

參數(shù)lang不寫(xiě)的時(shí)候默認(rèn)返回英文數(shù)據(jù)

 

實(shí)例代碼片段

a.php

$url='http://www.xxx.com/b.php';

$url=urlencode($url);

$;

@header("location:$href");

 

b.php

$code=$_GET['code'];

$url='https://api.weixin.qq.com/sns/oauth3/access_token?appid=xxx&secret=xxx&code='.$code.'&grant_type=authorization_code';

$jsonstr= file_get_contents($url);

$jsonstr = json_decode($jsonstr,true); 

$access_token= $jsonstr['access_token'];

$openid=$jsonstr['openid'];

$userurl='https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid;

$userinfo=file_get_contents($userurl); 

$userinfo = json_decode($userinfo,true); 

 

好吧勉強(qiáng)算是實(shí)現(xiàn)了。。。。。。。。。。但是經(jīng)過(guò)一段時(shí)間的運(yùn)行抓取信息并不穩(wěn)定會(huì)出現(xiàn)一部分用戶沒(méi)有獲取到頭像和昵稱琢磨了很久不知道問(wèn)題出現(xiàn)在哪里,在哪里?????

噢出現(xiàn)在 file_get_contents這個(gè)函數(shù)的問(wèn)題上,用file_get_contents雖然可以實(shí)現(xiàn)但表現(xiàn)的效果極不穩(wěn)定,后來(lái)改用curl就穩(wěn)定多了但是不會(huì)達(dá)到100%抓取多方面因素造成的,但基本在可接受范圍內(nèi)。

 

 

今天時(shí)間有限,分銷系統(tǒng)的定義、獲取微信用戶頭像昵稱等信息還有另一種方式不需要彈出授權(quán)界面、unionid多公眾平臺(tái)開(kāi)發(fā)的時(shí)候需要用到、實(shí)現(xiàn)持久登錄狀態(tài)需要cookie、以及分銷系統(tǒng)用戶端的商城部分的購(gòu)物車實(shí)現(xiàn)等內(nèi)容會(huì)在第二次進(jìn)行講解。

 

附系統(tǒng)訪問(wèn)路徑二維碼一個(gè),大家可以先看一下只能用微信訪問(wèn),可以提問(wèn)包括系統(tǒng)架構(gòu)、前端JS腳本和一系列功能模塊的實(shí)現(xiàn)問(wèn)題,我會(huì)根據(jù)大多數(shù)人的需求更改下次更新的內(nèi)容

 

php+微信接口開(kāi)發(fā)的微信分銷平臺(tái)拆分講解(一)微信oauth2接口

 





向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI