微信公衆號開發的一點自我小結,怕本身事後忘了,總結於此。

問:大俠,請教一下,若是那個公衆號的自定義菜單已經受權給了第三方,如何處理受權獲取code呢?php

 

答:同一個公衆號只能有一個控制後臺,公衆號後臺:開發->基本配置->服務器配置->服務器地址,這裏只能填一個地址!json

公衆號自定義菜單有兩種方式,一種是直接在後臺左邊,根據微信提供的界面,本身編輯,適合作一些靜態鏈接和展現,,另一種就是經過後臺程序來動態生成,動態生成確定是在前面的服務器配置那裏的後臺程序來接管的,若是這裏已經有一個第三方的地址了,除非修改他們的代碼,讓他們的代碼裏的菜單跳轉地址,轉到咱們的後臺程序裏。api

 

如何從公衆號自定義菜單攜帶公衆號訪問者的信息(openid)進入本身的後臺(這個就是OAuth認證),經過oauth_token換取access_token,這是微信開發的第二個難點,,第一個難點是如何讓公衆號跟咱們本身的後臺鏈接上,,第三個難點是微信的9大接口,須要用到jssdk開發,通常的公衆號後臺開發只須要PHP就能夠了,可是jssdk就還須要學習js的用法。緩存

 

扯遠了,仍是繼續說OAuth認證拿code的問題,假設自定義菜單上的跳轉連接是https://www.abc.com/wx/index.php,服務器

 

這個index.php的內容以下:微信

<?php include_once("wx_appidpwd.php"); //把配置路徑寫入 wx_appidpwd.php文件裏,這裏就引用一下,便於統一修改部署
    header('location:https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.$myappurl.'oauth.php&response_type=code&scope=snsapi_userinfo&state=1&connect_redirect=1#wechat_redirect'); ?>

 

$myappurl裏是再次跳轉的路徑, 好比$myappurl  ='https://yoooko.s1.natapp.cc/wx/';  拼接在一塊兒就是 redirect_uri=https://yoooko.si1.natapp.cc/wx/oauth.php微信開發

 

oauth.php的內容以下:app

<?php $code = $_GET['code']; $state = $_GET['state']; //$appid 都定義在 $appsecret 在wx_appidpwd.php文件裏
    include_once("wx_appidpwd.php"); if (empty($code)) $this->error('受權失敗'); //獲取oauth_token
    $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code'; $token = json_decode(file_get_contents($token_url)); if (isset($token->errcode)) { echo '<h1>錯誤:</h1>'.$token->errcode; echo '<br/><h2>錯誤信息:</h2>'.$token->errmsg; exit; } //經過oauth_token再獲取access_token,注意:此access_token與基礎的access_token不同,因此這次必須再次得到,而不能從緩存裏獲取
    $access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$appid.'&grant_type=refresh_token&refresh_token='.$token->refresh_token; //轉成對象
    $access_token = json_decode(file_get_contents($access_token_url)); if (isset($access_token->errcode)) { echo '<h1>錯誤:</h1>'.$access_token->errcode; echo '<br/><h2>錯誤信息:</h2>'.$access_token->errmsg; exit; } //經過access_token再獲取userinfo
    $user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token->access_token.'&openid='.$access_token->openid.'&lang=zh_CN'; //轉成對象
    $user_info = json_decode(file_get_contents($user_info_url)); if (isset($user_info->errcode)) { echo '<h1>錯誤:</h1>'.$user_info->errcode; echo '<br/><h2>錯誤信息:</h2>'.$user_info->errmsg; exit; } $user_openid = $user_info->openid; //ok echo $openid; //打印用戶信息
    /* echo '<pre>'; print_r($user_info); echo '</pre>'; */

  //其餘的業務邏輯代碼,好比登錄等等。。。
?>


這樣咱們就拿到了公衆號訪問者的信息了,包括openid之類的各類信息都有了,能夠去作後面的登錄之類的業務邏輯了。學習

 

兩年前作過微信公衆號的開發,後來感受受微信限制太多,而後知道了跨平臺的H5,就去入坑H5+的App開發了,到作了一年半了,js成了本身的主要工做語言,完成了兩個小產品,一個進銷存軟件的手機版,一個進銷存軟件的定貨平臺,,跨平臺的好處是,只要寫一次代碼,安卓和蘋果都能使用,並且手機的各類功能基本上都能調用,不受微信的限制,好比須要一條通知消息,微信公衆號的訂閱號和服務號都不能實現,必需要企業號才行,而App開發則須要經過第三方平臺發送透傳消息來實現,,若是一些更深刻的應用,好比要用手機來作藍牙打印,還須要去了解點Android和iOS原生開發的知識,甚至可能要開發本身的插件。this

 

等我作完手裏的這兩個App,再來總結下H5+開發的一些體會,是爲記。

相關文章
相關標籤/搜索