現在大部分微站都通過用戶的微信openid來實現自動登錄。在我之前的開發中,用戶通過點擊一個菜單,公眾號返回一個圖文,用戶點擊這個圖文才可以自動登錄微站。但是如果你擁有高級接口,就可以實現點擊菜單,打開網頁就能獲取這個openid,實現自動登錄。
這里已經提到,必須要擁有高級接口的權限(服務號、企業號),開啟了開發者模式。
1.設置回調地址
在微信公眾平臺后臺“開發者中心”中找到“高級接口”下的“OAuth2.0網頁授權”,后面有一個“修改”,點擊之后就會彈出填寫回調地址的對話框。具體如何授權,請點擊這里學習。只有獲得高級接口權限后,才能出現這個地方的“修改”。
注意,這里填寫的是域名,不是帶http://的網址,而且解釋中很清楚,“授權回調域名配置規范為全域名”,也就是說帶www和不帶是不同的兩個域名。因此我這里要填寫如下圖中的域名。
2. 創建菜單
創建菜單可以通過你的微站后臺創建,如果沒有開啟開發者模式,也可以通過微信公眾平臺后臺創建。
菜單使用點擊打開鏈接的模式,也就是view模式。如果你是使用開發者模式,通過向微信提交如下代碼,即可創建公眾號菜單(開發者文檔):
{ "button":[ { "type":"view", "name":"登錄微站", "url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid={在微信公眾平臺后臺獲取這個APPID}&redirect_uri={你填寫的回調域名下的地址}&response_type=code&scope=snsapi_base&state=1#wechat_redirect" }] }
代碼1 要提交的菜單代碼,下面要用到
APPID的獲取位置就是上面你填寫回調地址的那個“開發者中心”。下面我們用PHP來實現一下菜單提交:
代碼2 用PHP來創建微信公眾號菜單
代碼2其實有點冗余了,核心部分用紅色標出來了。就這樣,你的微信公眾號中應該很快就可以看到創建了一個“登錄微站”的菜單。點擊這個菜單就可以實現登錄微站了。
如果你不需要PHP,可以直接在微信公眾平臺后臺的菜單自定義中寫鏈接就可以了。
在上圖中的這個地方,選擇打開鏈接的方式創建菜單。OK,接下來把上面那個鏈接放進去:
創建菜單就可以了。
當然,你也有可能只需要在你自己的微信管理后臺加入這個鏈接就可以了。
3.在回調頁獲取openid
細心的你可能已經發現了,上面的鏈接地址中含有參數scope=snsapi_base,而非scope=snsapi_userinfo,因為使用前者不需要用戶點擊一個授權按鈕,直接跳轉到回調頁面,而后者需要點擊授權按鈕,不過點擊授權按鈕有好處,一是可以在沒有關注公眾號的情況下也可以授權,二是授權后可以獲得用戶的一些信息,如昵稱、性別、所在地。但是我們是為了利用openid進行登錄,所以直接選擇前者就可以了。
點擊菜單之后,經過微信authorize的處理,會跳轉到你提交的回調地址(這里需要提醒,回調地址最好不要帶參數,例如xxx/?callback=from_weixin,因為微信跳轉到你的回調地址也要帶參數,而這個參數就你需要的)。微信跳轉到如下URL:
上面代碼可以通過$_GET['code']獲得一個CODE值,利用這個CODE值和appid,可以獲得openid和access_token。
下面再用PHP來實現以下:
if($_GET['code']) { ? $code = $_GET['code']; ? $data = get_by_curl('https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=APPSRC&code='.$code.'&grant_type=authorization_code'); ? $data = json_decode($data); ? $openid = $data->openid; ? $access_token = $data->access_token; } function get_by_curl($url,$post = false){ ?? ?$ch = curl_init(); ?? ?curl_setopt($ch,CURLOPT_URL,$url); ?? ?curl_setopt($ch, CURLOPT_HEADER, 0); ?? ?curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); ?? ?if($post){ ?? ??? ?curl_setopt($ch, CURLOPT_POST, 1); ?? ??? ?curl_setopt($ch, CURLOPT_POSTFIELDS,$post); ?? ?} ?? ?$result = curl_exec($ch); ?? ?curl_close($ch); ?? ?return $result; }
這樣可以就可以獲得openid和access_token,利用這些值,我們還可以利用微信公眾平臺的獲取用戶基本信息api接口獲取用戶基本信息。
樂發網超市批發網提供超市貨源信息,超市采購進貨渠道。超市進貨網提供成都食品批發,日用百貨批發信息、微信淘寶網店超市采購信息和超市加盟信息.打造國內超市采購商與批發市場供應廠商搭建網上批發市場平臺,是全國批發市場行業中電子商務權威性網站。