パブリックプラットフォームの構成はより重要であり、成功できるかどうかを直接決定します。ドキュメントを見てから効果を調べるまでに2日かかったので、詳細にプロセスを記録し、それが直接影響を与えることを期待しています。
パブリックプラットフォームの構成
まず、WeChatパブリックプラットフォームを開いて、WeChatパブリックアカウントアカウントでログインし、ホームページを入力します-開発者ツール-パブリックプラットフォームテストアカウント
コードをスキャンすると、テストアカウントのappIDとappsecretが
表示され、次にページがドロップダウンします。—Webサービス— Webアカウント—基本的なユーザー情報を取得するためのWeb認証、次の変更をクリックして独自のIPを構成するか、ドメイン名とドメイン名を持っています。ここでIPアドレスを構成します。これを後でredirect_urlに入力するように構成すると、あなたの側のドメイン名が検証され、一貫性がなければなりません。
私がそんなに簡単に言ったことを見ないでください、私はそれを昨日と今日の朝1時間半だけ理解しました。遭遇した問題は非常に厄介です。
フロントエンドはコードを取得するための承認を開始します
承認ページauth.htmlを作成します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script>
$(document).ready(function(){
window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxcde95b1e2e57959c&redirect_uri=http%3A%2F%2F192.168.124.46%2Findex.html&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
})
</script>
</html>
ここ:AppIDでテスト番号AppID
redirect_uriを入力する必要はありません。ここでは、公式Webサイトに手順が記載されています。最初に、URLをurlcodeでトランスコードする必要があり、「基本的なユーザー情報を取得するためのWeb認証」構成で構成する前に、中央のドメイン名を入力する必要がありますドメイン名。説明することは他にありません。
index.htmlを作成します。
var _code = '';
var flag = true;
$(window).load(function() {
var code = urldata("code");
if (code != '' && code != null) {
_code = code;
console.log('授权成功:' + _code);
$.ajax({
url: '/rest/wx/code',
type: "POST",
data: {
code: _code
},
success: function() {
alert("发送成功!");
}
})
} else {
console.log("发送失败!");
//本页面发送请求
// if (flag) {
// window.location.href =
// "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxcde95b1e2e57959c&redirect_uri=http%3A%2F%2F192.168.124.46%2Findex.html&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
// flag = false;
// }
}
});
ここでurldataは外部から導入されたjsであり、その役割はurl内のパラメーターをインターセプトすることです。
geturldata.jsをインポートする
function urldata(aa) {
var params = new GetRequest();
var bb = decodeURI(params[aa]);
if (bb == null || bb == 'undefined' || bb == undefined || bb == 'null') {
bb = '';
}
return bb;
}
function GetRequest() {
var vars = {
}, hash;
var index_jinhao = window.location.href.indexOf('#');
var str = window.location.href.slice(window.location.href.indexOf('?') + 1);
if (index_jinhao != -1) {
str = window.location.href.slice(window.location.href.indexOf('?') + 1,
window.location.href.indexOf('#'));
}
var hashes = str.split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars[hash[0]] = hash[1];
}
return vars;
};
次に、WeChat開発者ツールに移動し(Webページのジャンプは役に立たないため)、auth.htmlインターフェースにアクセスし、コードパラメーターを使用してindex.htmlにジャンプし、それをインターセプトして、確認のためにバックエンドに送信します。
舞台裏のJava、文章が上手い、スプレーしない
@RequestMapping(value = "/code", method = RequestMethod.POST)
public String getCode(String code) {
System.out.println(code);
if (StringUtils.isNotEmpty(code)) {
HashMap<String, Object> map = new HashMap<>();
map.put("appid", ParamUtils.APPID);
map.put("secret", ParamUtils.SECRET);
map.put("code", code);
map.put("grant_type", "authorization_code");
String s = HttpClientUtils.doGet("https://api.weixin.qq.com/sns/oauth2/access_token", map);
JSONObject jsonObject = JSONObject.parseObject(s);
// System.out.println(jsonObject);
// Object access_token = jsonObject.get("access_token");
// Object expires_in = jsonObject.get("expires_in");
// Object refresh_token = jsonObject.get("refresh_token");
// Object openid = jsonObject.get("openid");
// System.out.println("access_token: "+access_token+'\n'+"expires_in: "+expires_in+'\n'
// +"refresh_token: "+refresh_token+"\n"+"openid: "+openid);
String access_token = jsonObject.getString("access_token");
String expires_in = jsonObject.getString("expires_in");
String refresh_token = jsonObject.getString("refresh_token");
String openid = jsonObject.getString("openid");
System.out.println("access_token: " + access_token + '\n' + "expires_in: " + expires_in + '\n'
+ "refresh_token: " + refresh_token + "\n" + "openid: " + openid);
if (StringUtils.isNotEmpty(access_token) && StringUtils.isNotEmpty(openid)) {
String url = "https://api.weixin.qq.com/sns/userinfo";
HashMap<String, Object> map1 = new HashMap<>();
map1.put("access_token", access_token);
map1.put("openid", openid);
map1.put("lang", "zh_CN");
String s1 = HttpClientUtils.doGet(url, map1);
System.out.println(s1);
return s1;
}
}
return code;
}
HttpClientUtilsツールを入手してください
宣伝する
テクニカルエクスチェンジグループ、ジャーブラントシリーズアイデアウェブストームなどのツールに無料の自動オープニングパッケージを提供します。
テクニカルエクスチェンジ共有②グループ:272712006
テクニカルエクスチェンジ共有③グループ:1093476453
bilibili学習チュートリアルアドレス:https ://space.bilibili.com/439411741/video简书
アドレス:Https : //www.jianshu.com/p/133af2e4fe3f