1. 程式人生 > >微信公眾號OAuth 點選選單按鈕 跳轉頁面授權 獲取openid

微信公眾號OAuth 點選選單按鈕 跳轉頁面授權 獲取openid

流程:
使用者點選選單按鈕
—–> 傳送頁面授權請求到微信後臺
—–>得到code傳送到 我們伺服器後臺的url
—–> 將code引數傳送到微信後臺獲取使用者的openid返回伺服器上的頁面(也可以直接獲取使用者頭像等基本資訊。。需使用者點選同意授權)

選單view按鈕的url:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=“+yourAppid+”&redirect_uri=”+你要跳轉的url+”&response_type=code&scope=snsapi_base&state=1#wechat_redirect”

你要跳轉的url 請求到後臺 獲取頁面授權的code

    String code = request.getParameter("code");// 頁面授權獲取的code用以交換openid額access_token
    openid = OAuthGetOpenid(code);// OAuth獲取使用者openid區分是哪個使用者請求登入W3
/**
 * 通過頁面OAuth授權,用code獲取openid
 * 
 * @param code
 * @return
 */
public String OAuthGetOpenid(String code) {
    JSONObject json = new JSONObject();
    String requestUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=你的公眾號id&secret=你的公眾號密碼&code=" + code + "&grant_type=authorization_code";
    String outputStr = "";
    new HttpRequestPost();
    json = HttpRequestPost.httpRequest(requestUrl, outputStr, "POST");
    String openid = json.getString("openid");
    return openid;
}

傳送http請求的方法程式碼

/***
 * 向微信端傳送post請求
 *
 */
public class HttpRequestPost {

    public static JSONObject httpRequest(String requestUrl, String outputStr, String method) {
        JSONObject jsonObject = null;
        StringBuffer buffer = new StringBuffer();
        try {
            // // 建立SSLContext物件,並使用我們指定的信任管理器初始化
// TrustManager[] tm = { new MyX509TrustManager() }; // SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); // sslContext.init(null, tm, new java.security.SecureRandom()); // 從上述SSLContext物件中得到SSLSocketFactory物件 // SSLSocketFactory ssf = sslContext.getSocketFactory(); URL url = new URL(requestUrl); HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection(); // httpUrlConn.setSSLSocketFactory(ssf); httpUrlConn.setDoOutput(true); httpUrlConn.setDoInput(true); httpUrlConn.setUseCaches(false); // 設定請求方式(GET/POST) httpUrlConn.setRequestMethod(method); httpUrlConn.connect(); // 當有資料需要提交時 if (null != outputStr) { OutputStream outputStream = httpUrlConn.getOutputStream(); // 注意編碼格式,防止中文亂碼 outputStream.write(outputStr.getBytes("UTF-8")); outputStream.close(); } // 將返回的輸入流轉換成字串 InputStream inputStream = httpUrlConn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null; while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } bufferedReader.close(); inputStreamReader.close(); // 釋放資源 inputStream.close(); inputStream = null; httpUrlConn.disconnect(); jsonObject = JSONObject.fromObject(buffer.toString()); System.out.println("http-back:" + jsonObject); } catch (ConnectException ce) { System.err.println("Weixin server connection timed out."); } catch (Exception e) { System.err.println("https request error:{}" + e); } return jsonObject; } }

相關推薦

公眾OAuth 選單按鈕 頁面授權 獲取openid

流程: 使用者點選選單按鈕 —–> 傳送頁面授權請求到微信後臺 —–>得到code傳送到 我們伺服器後臺的url —–> 將code引數傳送到微信後臺獲取使用者的openid返回伺服器上的頁面(也可以直接獲取使用者頭像等基本資訊。。需

公眾開發--自定義選單頁面獲取使用者資訊

請先讀完本文再進行配置開發 請先前往微信平臺開發者文件閱讀“網頁授權獲取使用者基本資訊”的介面說明 在微信公眾賬號開發中,往往有定義一個選單,然後使用者點選該選單就進入使用者個人中心的功能,通常應用於各個公眾賬號中的會員服務。 如何在微信自定義選單中將使用

公眾建立自定義選單(公眾小程式功能)

使用JAVA後端去自定義建立選單,微信公眾號開發文件中提供了API: 建立選單中有一些要注意的地方: 1、自定義選單最多包括3個一級選單,每個一級選單最多包含5個二級選單。 2、一級選單最多4個漢字,二級選單最多7個漢字,多出來的部分將會以“...”代替。 3、建

公眾開發---自定義選單的建立及選單事件響應(java)

微信5.0釋出 2013年8月5日,伴隨著微信5.0 iPhone版的釋出,公眾平臺也進行了重要的更新,主要包括: 1)運營主體為組織,可選擇成為服務號或者訂閱號; 2)服務號可以申請自定義選單; 3)使用QQ登入的公眾號,可以升級為郵箱登入;

公眾開發時,前端向後端傳送請求獲取signature和openID時出現跨域錯誤的解決辦法。

微信公眾平臺開發用了前端和後端兩個人,前期開發階段前端就很容易遇到跨域問題,今天在前端向後端傳送請求獲取signature,但是前段老是報錯跨域,接受後端的返回資料失敗怎麼辦呢? 其實很簡單,後端最後返回簽名的程式碼本來是這樣的: System.out.println("

C#公眾全攻略(5)--群發訊息時的openid對應的使用者是誰呢

有一個openid不屬於公眾號關注使用者的任何一位 在通過微信控制檯群發訊息後 將有一個Event為MASSSENDJOBFINISH的事件推送 對應的openid 他是誰呢 他的nickname是張三瘋 來自 中國 廣東 廣州 簽名是DayDayUpUp

公眾用java中控伺服器-實現使用者網頁授權獲取使用JS-SDK許可權

一、網頁授權,是指使用者點選微信公眾號裡的自定義選單在開啟頁面中獲取授權使用者資訊,可以用來實現免登入。 下圖是需要引導使用者點開的地址其中redirect_uri=指向你真正要跳轉的地址,比如可以在自定義選單跳轉地址中改成這種地址形式,就可以在頁面中獲取到位

Android選單之後到一個新的頁面

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.example.jumpmenuitem"

jsbutton按鈕到另一個新頁面

點選按鈕怎麼跳轉到另外一個頁面呢?我們在網站製作中可能是需要的,因為有時我們需要做這樣的效果,尤其是將按鈕做成一個圖片,而點選圖片要跳轉到新的頁面時,怎麼做到呢? 這樣的效果可以:onclick="window.location='新頁面'" 來實現。 1.在原來的窗體中直接跳轉用 程式碼如下 window

在app某個按鈕到瀏覽器開啟某個頁面

1.iOS  NSString *urlstr = @"www.baidu.com"; [[UIApplication sharedApplication] openURL:[NSURL URLWi

公眾選單 無法提供服務

微信公眾號點選選單後 圖文回覆正常。但是過十秒鐘左右會接著彈出一個 該公眾號無法提供服務請稍後重試! 這是個很神奇的事情。如下圖 感覺像點一次選單 回覆了兩個訊息。 第一條訊息是正常的 第二條的這個 該公賬號暫時無法提供服務,請稍後再試 真的無解

公眾選單到外部瀏覽器

可實現微信訂閱號以及服務號在做行銷活動中,需要使用者點選公眾號文章推送底部的閱讀原文,跳轉到手機預設瀏覽器打APP下載連結或者是活動頁面。 應用場景 1、公眾號導航欄點選選單跳轉 2、公眾號自動回覆跳轉 3、公眾號圖文連結跳轉 4、公眾號閱讀原文跳轉 演示案例

公眾選單openid 選單即可開啟並登入微站

現在大部分微站都通過使用者的微信openid來實現自動登入。在我之前的開發中,使用者通過點選一個選單,公眾號返回一個圖文,使用者點選這個圖文才可以自動登入微站。但是如果你擁有高階介面,就可以實現點選選單,開啟網頁就能獲取這個openid,實現自動登入。 這裡已經提到,必

連結公眾關注頁、關注連結

現在的公眾號引流一般都只能是 二維碼掃碼後關注,那麼通過點選一段網頁連結(圖片、或文字)怎麼引導使用者到公眾號關注頁呢? 一、首先開啟需要設定關注頁 的公眾號 此時的公眾號應該已經開啟 原創功能並發表有原創文章(登入微信公眾平臺設定) 二、進入公眾號的訊息列表頁,並進入任意一篇 原

公眾中點選單直接開啟手機瀏覽器是如何實現的

最近遇到一個需求、朋友找我製作一個在微信中的聊天框,或者公眾號選單釋出一條連結或者二維碼跳出微信開啟一個指定的我們自己的頁面, 拿到這個需求後我們團隊分開去找資料研究方案,通過微信的開發文、騰訊的第三方開發文件我們都查閱過資料但是最終只找到一些歷史性的資料也就是以前可以現在已經全部封閉了在網路上

第三方App關注公眾,公眾的實現方法.

現在越來越多的App都要求關注公眾號,實現跳轉到微信公眾號介面,或者已經關注的人,直接進來微信公眾號中聊天! 在之前可以通過以下方式實現跳轉:// Intent i = new Intent(Intent.ACTION_VIEW); //

公眾分享生成分享的圖片,可以調整二維碼,頭像,暱稱到背景圖指定位置

本人菜鳥一枚,只是喜歡搞點東西耍,老鳥勿噴 使用者先準備好生成的背景圖,二維碼,獲取的微信頭像,微信暱稱,然後進行如下操作: /**  * Class Sharegenerateimg使用方式:  *  * 匯入類  *  * require_once '.../.../

公眾 擊預覽大圖。支持滑動,雙擊放大功能。

-1 放大 ++ inf cti this b- click scrip <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script

公眾自定義選單裡如何設定“歷史訊息”?

2016年1月18日,騰訊在北京釋出訊息稱,中國政務微信公號已逾10萬。2018年6月6日,微信宣佈公眾號讚賞功能升級為“喜歡作者”,讀者可以直接向原創文章作者進行讚賞。2018年6月27日,微信官方宣佈,微信公眾平臺上線開放轉載功能,而轉載文章也可以讚賞作者了。 微信公眾號的一次次升級

公眾開發(一) -- 自定義選單 動態選單

簡單修改一下appid、appsecret 程式碼可直接複製使用 自定義選單 //獲取token值 $appid = ''; //微信支付申請對應的公眾號的APPID $appsecret = ''; ////微信支付申請對應的公眾號的APP Key $url = "https://