微信開發小結

做過好幾次微信開發了;每一次都會遇到不同的坑,這一次只是總結一下教訓,寫給自己的,希望如果對你們有幫助的話,希望給個贊;


項目需求

項目原來是有php進行開發的,php內嵌html,這樣是快速的開發了,但是,
對內部文件的保密性太差;這是改造項目的根本原因;
1:將后臺改為java進行處理;但是因為前期前后人員進行任務劃分的不明確
導致后期開發,遇到各種"坑";我們認為java可以處理用戶的登陸問題;但是這一次,
確實沒有成功;
2:對微信訂閱號和微信服務號接口功能的認識不足,導致時間浪費;

1:微信公眾號登陸和網頁授權問題

首先,大家應該清楚,在進行微信公眾號的時候,有的會提醒大家進行確認登錄,但是有的公眾號沒有提醒,但是確實能夠保存,大家之間進行操作的信息; 這是微信服務號給大家提供的兩種網頁授權方式; a:靜默授權;當你進入公眾號,但是沒有提醒你確認等咯的時候,該服務號進行了靜默授權; b:如果彈出了"確認登陸"的操作框的時候;是使用了微信的第二種授權方式; 個人總結:這兩種的授權方式;是存在用戶信息完整度的區別;不用說,大家也能知道;肯定是第二種授權方式,獲取的用戶信息更詳細;這個需要根據不同的需求進行選擇;

  • 1:接下來我要說的進行網頁授權的過程;詳細過程大家請參照微信開發文檔;我在這里要寫的就是我自己遇到的一些問題
    如果用戶在微信客戶端中訪問第三方網頁,公眾號可以通過微信網頁授權機制,來獲取用戶基本信息,進而實現業務邏輯。
    第一步:用戶同意授權,獲取code 在確保微信公眾賬號擁有授權作用域(scope參數)的權限的前提下(服務號獲得高級接口后,默認擁有scope參數中的snsapi_base和snsapi_userinfo),引導關注者打開如下頁面:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

我想在這說的就是redirect_uri參數的問題;先說一下這個鏈接吧,這個鏈接的根本目是獲取code,要注意的問題就是appID,一定是服務號的appid,如果報scope沒有權限,或者關于scope問題;就很有可能就是這個id的問題;這個id沒有必需是這個功能要上的id,可以是另外一個服務號的ID;但是id和對應的應用秘鑰還有安全域名接口對應的秘鑰txt,文件一定要相對應,不能再不同的公眾對應的項;


這個鏈接可以解釋為;經過用戶點擊相應這個鏈接之后,微信會進行redirect_uri回調,并且會在攜帶code在回調鏈接的后面;所以相應的redirect_uri后面的鏈接地址就是我們要讓微信指向的連接地址;其中,我處理的是對我們自己的連接地址進行encodeURIComponent("這里面放我們自己鏈接地址");函數處理;接下來按照衛星給的方式進行拼接;當成功進行連接回調的時候;這個時候盡可以進入第二步了;

  • 2:第二步:獲取openid;
    通過code換取網頁授權access_token 首先請注意,這里通過code換取的是一個特殊的網頁授權access_token,與基礎支持中的access_token(該access_token用于調用其他接口)不同。公眾號可通過下述接口來獲取網頁授權access_token。如果網頁授權的作用域為snsapi_base,則本步驟中獲取到網頁授權access_token的同時,<em>也獲取到了openid</em>,snsapi_base式的網頁授權流程即到此為止。

這個功能我們最后協商的結果是使用php進行openid的獲取.java具體可不可以還真不知道,這個我會繼續驗證;

接下來只需要運行下面的代碼進行了;當然相應的php依賴文件還是要引入的;這個在微信開發文檔中,JS-SDK;中有關于php還有node的demo;直接拿來用就行;
php代碼如下:
$code = $_GET['code'];//獲取code $weixin= file_get_contents("[https://api.weixin.qq.com/sns/oauth2/access_token?appid=](https://api.weixin.qq.com/sns/oauth2/access_token?appid=)這里是你的APPID&secret=這里是你的SECRET&code=".$code."&grant_type=authorization_code");//通過code換取網頁授權access_token $jsondecode = json_decode($weixin); //對JSON格式的字符串進行編碼 $array = get_object_vars($jsondecode);//轉換成數組 $openid = $array['openid'];//輸出openid
然后接下來前端人員,要做的就是通過ajax,將openid傳給后臺;'<? php echo $openid;?>'

這是自己經歷的;可能有錯;希望能有所幫助;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容