1. 程式人生 > >redirect_uri 參數錯誤的解決的方法

redirect_uri 參數錯誤的解決的方法

寫法 授權 ttr java代碼 -m tunnel set 詳細 log

我通過java代碼去獲得用戶的openid,一直報redirect_uri。

我頁面代碼的鏈接為:

https://open.weixin.qq.com/connect/oauth2/authorize?
        appid=APPID&
        redirect_uri=ENCODE(URL)&
        response_type=code&
        scope=snsapi_base&
        state=state#wechat_redirect"

當中APPID為項目的appid,ENCODE(URL)為鏈接希望跳轉的url地址(url須要urlencode),url的encode在java中代碼實現例如以下:

        // url進行編碼
        String url = "http://evan.tunnel.mobi/zzaClient/bindindex.html";
        String url_encode = java.net.URLEncoder.encode(url, "utf-8");

        request.setAttribute("url_encode", url_encode);

當前臺頁面構造完畢後,點擊頁面鏈接會跳轉到bindindex.html的controller,在這個controller的代碼寫法是:

        // 須要在“開發人員中心”---網頁賬號--改動。

改動成域名。不要帶http 。比方:evan.tunnel.mobi // 通過code獲取openid String code = request.getParameter("code"); JsonObject json = WeixinUtils.getOpenId(getopenid_url, app_id, secret, code, "authorization_code"); String openid = json.get("openid").getAsString(); logger.info

(openid + "------------------------------openid");

但是奇怪的是,以上全部參數都沒有寫錯,url也進行編碼了。但是還是會報redirect_uri 參數錯誤。解決的方法是: 須要在微信公眾平臺的“開發人員中心”—網頁賬號–改動 把“授權回調頁面域名”改成server的域名就可以。

如圖:
技術分享

到這樣,openid就能夠正常獲得了。有些開發人員可能會有些疑問,假設我每次更改都要部署到正式環境進行測試。這樣多浪費時間,事實上我們能夠通過ngrok將本地地址映射到外網,這樣就能夠將開發環境的地址直接映射到外網。

詳細操作詳見博客:
http://blog.csdn.net/zl544434558/article/details/46593063

最後附上一張報錯的圖片
技術分享

redirect_uri 參數錯誤的解決的方法