redirect_uri 參數錯誤的解決的方法


我通過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

最后附上一張報錯的圖片
這里寫圖片描寫敘述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM