導航:首頁 > 編程語言 > java微信網頁授權

java微信網頁授權

發布時間:2023-06-06 05:33:53

『壹』 java基於微信開發,用oauth2靜默授權是,回調的url總是執行兩次,怎麼回事呀

  1. 用戶關注微信公眾賬號;

  2. 微信公眾賬號提供用戶請求授權頁面URL;

  3. 用戶點擊授權頁面URL,將向伺服器發起請求;

  4. 伺服器詢問用戶是否同意授權給微信公眾賬號;

  5. 用戶同意(scope為snsapi_base時無此步驟);

  6. 伺服器將CODE通過回調傳給微信公眾賬號;

  7. 微信公眾賬號獲得CODE;

  8. 微信公眾賬號通過CODE向伺服器請求Access Token;

  9. 伺服器返回Access Token和OpenID給微信公眾賬號;

  10. 微信公眾賬號通過Access Token向伺服器請求用戶信息;

  11. 伺服器將用戶信息回送給微信公眾賬號。

『貳』 緊急求助,微信設置「開發者中心」的 OAuth2.0網頁授權設置

1.OAuth 2.0網頁授權有兩種模式:

‪(1)
Base(基本型),用戶可直接通過鏈接訪問,相應的微信公眾賬號只能獲取用戶的openid,無法獲取到其它信息。

‪(2) Userinfo(用戶信息型),訪問時會彈出授權頁面,同意後微信公眾賬號可以獲取用戶其它信息,比如昵稱、頭像、性別、省份等等。
具體的設置方法,你可以按照韓順平的PHP微信開發課程來設置

『叄』 java中微信分享鏈接獲取openid,

1 首先,我們需要進入我們的服務號,點擊左側欄開發者中心--->修改網頁授權獲取用戶基本信息的值,假設我們對外的ip為183.33.212.175,tomcat的埠號為8016,這個修改為183.33.212.175:8016。
2 創建WeiXinOauth2Token類。該類具有以下屬性:(自行添加get,set方法)

private String accessToken;

private int expiresIn;

private String refeshToken;

private String openId;

private String scope;
3 調用微信的授權介面

4 然後將redirect_uri進行encode
5 獲取用戶openid

『肆』 java怎麼獲取微信的openid

java獲取微信的openid的方法是根據授權code來獲取的,方法如下:
一個Servlet請求 獲取code:
/**
* 根據code取得openId
*
* @param appid 公眾號的唯一標識
* @param secret 公眾號的appsecret密鑰
* @param code code為換取access_token的票據
* @return
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//參數
String code = request.getParameter("code");

if(null != code && !"".equals(code)){
log.info("==============[OAuthServlet]獲取網頁授權code不為空,code="+code);
//根據code換取openId
OAuthInfo oa = WeixinUtil.getOAuthOpenId(Constants.appId,Constants.appSecret,code);
UserInfo info = WeixinUtil.getUserInfo(oa.getAccessToken(), oa.getOpenId());
if(!"".equals(oa) && null != oa){
request.setAttribute("openid", oa.getOpenId());
request.setAttribute("nickname", info.getNickname());
request.getRequestDispatcher("/index.jsp").forward(request, response);

}else{
log.info("==============[OAuthServlet]獲取網頁授權openId失敗!");
}
}else{
log.info("==============[OAuthServlet]獲取網頁授權code失敗!");
}
}

替換相應的APPID APPSECRET SCOPE。
過code換取網頁授權access_token 這里的access_token與基礎獲取的access_token不同

獲取code後,請求以下鏈接獲取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

具體做法與上面基本一致。更換相對應的值。需要注意的是code可以寫一個Servlet獲取。String code = request.getParameter("code");get/post都可以。
這樣子就會返回一下json格式數據
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}

『伍』 微信web開發者工具如何進行調試微信網頁授權

具體操作步驟為:

『陸』 oauth2.0網頁授權微信怎麼用java獲取code

@RequestMapping(value="oauth2/{type}/{appId}/{scope}", method=RequestMethod.GET)
public ModelAndView index(@PathVariable String type,@PathVariable String appId,@PathVariable String scope,String openId){
ModelAndView view=new ModelAndView();
if(StringUtils.isEmpty(appId)||mapWxAppInfo.get(appId)==null){
view.setViewName("fail");
return view;
}
//scope=snsapi_base 獲取用戶openId,無需授權
//scope=snsapi_userinfo 獲取用戶基本信息,需授權
String oauthUrl="https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=%s&state=%s#wechat_redirect";
//處理授權回調地址
String callback="http://wx.lrlz.com/wx/callback/"+appId;
if(!StringUtils.isEmpty(openId)){
callback += "/"+openId;
}
oauthUrl=String.format(oauthUrl, appId,callback,scope,type);
log.info("微信授權認證地址="+oauthUrl);
view.setViewName("redirect:" + oauthUrl);
return view;
}

/**
* 處理網頁授權回調
* */
@RequestMapping(value="callback/{appId}")
public ModelAndView callback(@PathVariable String appId,String code,String state,String redirectUri,HttpServletRequest req,HttpServletResponse response){
return getCallback(appId,code,state,null);
}

這樣就行了

閱讀全文

與java微信網頁授權相關的資料

熱點內容
minecraft伺服器怎麼布置 瀏覽:306
怎麼把安卓的東西轉到已激活蘋果 瀏覽:852
停止服務doss命令 瀏覽:877
u盤占內存但該文件夾為空 瀏覽:611
伺服器怎麼更換重生點 瀏覽:34
收費api調用平台源碼 瀏覽:646
安卓怎麼自檢病毒 瀏覽:560
布卡雲伺服器 瀏覽:770
程序員是怎麼做系統的 瀏覽:742
燕窩溯源碼最大加工廠 瀏覽:936
黑馬程序員第28集 瀏覽:485
lcd單片機驅動 瀏覽:647
通達信主力拉升出貨指標公式源碼 瀏覽:639
廉潔pdf 瀏覽:18
批量用修改多個文件夾及子目錄 瀏覽:321
王者每個伺服器爆滿怎麼辦 瀏覽:951
安卓手機如何清除所有的數據 瀏覽:983
激光打標機加密狗驅動無法啟動 瀏覽:912
矽谷程序員題庫 瀏覽:564
安卓系統怎麼開車模式 瀏覽:944