首頁 微信小程式 微信開發 圖文詳解微信公眾號開發自訂選單跳轉頁面並取得使用者資訊實例

圖文詳解微信公眾號開發自訂選單跳轉頁面並取得使用者資訊實例

Mar 16, 2017 pm 03:09 PM
微信公眾號開發

這篇文章主要介紹了微信公眾號開發自訂選單跳轉頁面並獲取使用者資訊實例詳解的相關資料,需要的朋友可以參考下

#微信公眾號開發自訂選單

請先讀完本文再進行設定開發

請先前往微信平台開發者文件閱讀「網頁授權取得使用者基本信息」的介面說明

在微信公眾帳號開發中,往往有定義一個選單,然後使用者點擊該選單就進入使用者個人中心的功能,通常應用於各個公眾帳號中的會員服務。

如何在微信自訂選單中將使用者導覽到個人中心頁面呢?

首選需要透過使用者點擊來取得使用者openid,而透過使用者的點擊跳轉取得使用者openid就必須在選單中動態綁定使用者的openid,或是在選單的跳躍URL中填入微信提供的鏈接,官方給了兩個鏈接類型

一種是Scope為snsapi#base的鏈接

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
登入後複製


另一種是Scope為snsapi_userinfo的連結

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
登入後複製

這兩個連結的差異如下<a href="http://www.php.cn/code/8209.html" target="_blank"></a>應用程式授權作用域,snsapi_base (不彈出授權頁面,直接跳轉,只能取得使用者openid),snsapi_userinfo (彈出授權頁面,可透過openid拿到暱稱、性別、所在地。並且,即使在未在關注的情況下,只要用戶授權,也能獲取其資訊)<a href="http://www.php.cn/wiki/109.html" target="_blank"></a><a href="http://www.php.cn/wiki/137.html" target="_blank">網路上很多說法是將連結的url直接作為微信自訂選單中view類型中的url(在填寫是url時需要設定網頁授權回呼網域和appid),本人試了一下這種做法然而不能成功</a>

{ "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" },
登入後複製

返回結果是建立選單失敗

建立選單失敗errcode:{40033} errmsg:{invalid char

set

. please check your request,

if圖文詳解微信公眾號開發自訂選單跳轉頁面並取得使用者資訊實例

include

\uxxxx will create fail! hint: [91..gA0792vr23]}

我試了一下將後面的位址進行urlEncode,還是同樣的錯誤。

後來我想了一個方法

在自訂選單中填寫自己的url,在填寫的url中將使用者重定向到snsapi_base的url中,然後再在snsapi_base中配置獲取使用者openid以及使用者其他訊息,最後跳到一個頁面,也就是通常的會員中心頁面。

流程如下

請看程式碼

#{ "type":"view",

# "name":"會員中心",

"url":"http://設定的網址/redirect"}

#其中透過url將使用者跳到

http://配置的網址/redirect

然後在處理方法中呼叫一次重定向即可

//类上的配置
@Controller
@RequestMapping("/wechat")
public class WeChatController{
  @RequestMapping(value = "/redirect", method = RequestMethod.GET)
  public String weixinRedirect(HttpServletRequest request, HttpServletResponse response) {
    return "redirect:https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的appid&redirect_uri=你的服务器处理地址?response_type=code&scope=snsapi_base&state=1&connect_redirect=1#wechat_redirect";
    }
}
登入後複製

伺服器會將微信認證跳到你的伺服器處理位址,也就是上面

##redirect_uri =你的伺服器處理位址中的位址

這裡配置為

圖文詳解微信公眾號開發自訂選單跳轉頁面並取得使用者資訊實例

你的伺服器位址/oauth

圖文詳解微信公眾號開發自訂選單跳轉頁面並取得使用者資訊實例

程式碼如下

@RequestMapping(value = "/oauth", method = RequestMethod.GET)
  public String weixinOAuth(HttpServletRequest request, HttpServletResponse response, Model model) {
    //得到code
    String CODE = request.getParameter("code");
    String APPID = "你的APPID";
    String SECRET = "你的SECRET";
    //换取access_token 其中包含了openid
    String URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code".replace("APPID", APPID).replace("SECRET", SECRET).replace("CODE", CODE);
    //URLConnectionHelper是一个模拟发送http请求的类
    String jsonStr = URLConnectionHelper.sendGet(URL);
    //System.out.println(jsonStr);
    //out.print(jsonStr);
    JSONObject jsonObj = new JSONObject(jsonStr);
    String openid = jsonObj.get("openid").toString();
    //有了用户的opendi就可以的到用户的信息了
    //地址为https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
    //得到用户信息之后返回到一个页面
    model.addAttribute("user", wechatUser);
    return "vip/userInfo";
  }
登入後複製
######效果如下#########################而且這種方式當使用者用其他瀏覽器開啟時,會出錯,保證了只能在微信中使用,保障了###安全###性。而且網址列不會有其他使用者個人資訊的曝光。 ###

圖文詳解微信公眾號開發自訂選單跳轉頁面並取得使用者資訊實例





###########################

以上是圖文詳解微信公眾號開發自訂選單跳轉頁面並取得使用者資訊實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24