php+微信介面開發的微信分銷平台拆分講解(一)微信oauth2介面

來源:互聯網
上載者:User
本人一IT民工一枚,不是高手更不是大神但希望能成為雷鋒。沒有神馬文筆,只會發牢騷,講解不清楚可以繼續提問在時間允許的情況下我會盡量去回答。

本文不提供整套系統源碼,只會開放部分源碼,講訴開發的經曆、思路、問題解答,希望對新手有協助,至於高手和大神一下而過或留下寶貴意見在此謝過。


廢話不多說了開始進入正題。

基礎篇

php當前主流WEB開發語言毋庸置疑不用多說。介面主要用到授權登入介面、JSSDK分享介面、支付介面,對於的一系列介面必須要牢騷一下到處是坑啊。分銷系統是一種營銷模式以後會解釋。首先說一下第一步登入(oauth2第三方授權介面),個人認為比較重要的一部,優點使用者體驗高、安全性高、為後邊做分銷系統打下便利的基礎,缺點只能在內建瀏覽器中訪問對於外其他方式宣傳推廣不便利,只能用二維碼的方式(產生連結形式的二維碼網上第三方工具很多,也可以用程式來實現,有興趣可以留言)。

首先看一下傳說中的API介面文檔吧,官網文檔地址http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

用該介面必須需要一個認證的服務號、沒有的情況下可以申請一個測試帳號體驗一下但不能宣傳推廣

關於網頁授權回調網域名稱的說明

文檔寫的比較清楚,在不用第三方平台的情況下,需要配置一下項目需要擷取使用者資訊的路徑,一二.....級網域名稱都可以。這個比較明朗

再往下看第一遍沒看懂,第二遍沒看懂。。。。。。項目是一年前開始開發的當時的文檔比現在還簡陋而且網上可參考的資料很少官方沒有執行個體,還好最後從一篇文章找到蛛絲馬跡算是做出來了,牢騷一下

其他說明

先介紹幾個參數appid和appsecret在公眾平台中可以找到很多介面的調用都會用到這兩個參數。

最重要的一個參數也是調用授權介面的目的,openid,它是一個號對應該公眾平台的唯一標示,擷取到它就可以認為使用者已經登入了,後邊一切商務程序和資料庫記錄都是圍繞它來建立的。

下面說說如何擷取openid和使用者基本資料比如頭像暱稱城市性別等,這是一個比較蛋疼的過程,這麼多步驟玩我們呢是吧?給你找個理由是為了安全性考慮吧。我又發牢騷了不好意思。

分三步

1擷取code,啥是code???不知道反正擷取到它才能進行下一步

介面地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&resp/span>

appid剛才提高過在公眾平台裡可以找到,redirect_uri是重點它是再使用者通過上述的介面地址發出請求到的伺服器,伺服器通過GET方式傳遞一個參數code返回到redirect_uri,用$_GET方式接受一下就可以。scope也是個比較重要的參數他有兩種類型snsapi_base、snsapi_userinfo,說說區別如果只想實現登入也就是只需要openid那麼使用snsapi_base,它的好處是使用者在訪問時並不知曉你抓取了他的openid。使用snsapi_userinfo除了可以抓取openid以外,還能抓取到更多很多使用者資訊,現在很多應用都需要頭像和暱稱那麼直能使用snsapi_userinfo,缺點為會首先彈出授權是否允許的頁面需經過使用者同意才可以進行下一步的操作


2.擷取openid和access_token

通過剛才擷取到的code以及appid和appsecret

介面:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

返回的是json格式的資料

3擷取頭像暱稱等...

通過openid和access_token

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

返回的是json格式的資料

參數lang不寫的時候預設返回英文資料

執行個體程式碼片段

a.php

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

$url=urlencode($url);

$href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=$url&resp/span>

@header("location:$href");

b.php

$code=$_GET['code'];

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

$js/span>

$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);

好吧勉強算是實現了。。。。。。。。。。但是經過一段時間的運行抓取資訊並不穩定會出現一部分使用者沒有擷取到頭像和暱稱琢磨了很久不知道問題出現在哪裡,在哪裡?????

噢出現在 file_get_contents這個函數的問題上,用file_get_contents雖然可以實現但表現的效果極不穩定,後來改用curl就穩定多了但是不會達到100%抓取多方面因素造成的,但基本在可接受範圍內。

今天時間有限,分銷系統的定義、擷取帳戶圖片暱稱等資訊還有另一種方式不需要彈出授權介面、unionid多公眾平台開發的時候需要用到、實現持久登入狀態需要cookie、以及分銷系統使用者端的商城部分的購物車實現等內容會在第二次進行講解。

附系統訪問路徑二維碼一個,大家可以先看一下只能用訪問,可以提問包括系統架構、前端JS指令碼和一系列功能模組的實現問題,我會根據大多數人的需求更改下次更新的內容




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

以上就介紹了php+介面開發的分銷平台拆分講解(一)oauth2介面,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.