WeChatテスト番号の開発の9マイクロクレジットのウェブページの授権:ページはユーザーのopenidを取得します.
4839 ワード
一:インターフェースの設定
ここにはURLではなくドメイン名(文字列です)を記入していますので、http:/などのプロトコルヘッダを付けないでください.
二:公衆番号メニューを定義し、授権ページにジャンプする(またはリンクを直接ジャンプする)
redirect_.uri授権後のリダイレクトリンクアドレスは、url Encodeを使ってリンクを処理してください.
レスポンスタイプを返します.コードを記入してください.
scopeアプリケーションのライセンスのスコープ、snsapi_base(ライセンスページをはじかず、直接ジャンプして、ユーザーのopenidを取得するしかない)、snsapi_userinfo(ライセンスページをイジェクトすると、オプニティを通じてニックネーム、性別、所在地を取得することができます.また、関心がない場合でも、ユーザが授権すれば、その情報を得ることができます.)
stateリダイレクト後にstateパラメータを持参します.開発者はa-zA-Z 0-9のパラメータ値を記入できます.最大128バイトです.
ヽoo.ツredirectは、直接開いてもページ302をリダイレクトしても、このパラメータを持つ必要があります.
三:コードの取得
メニューボタンをクリックすると、ページがジャンプします.http://wx.intmote.com/debo_wx/index./?code=CODE&state=STATE.
エラーコードの説明を返します.
10003 redirect_uriドメイン名とバックグラウンドの配置が一致していません.この公衆番号は10005封じられました.この公衆番号はこれらのscopeの権限10006がありません.このテスト番号に注目しなければなりません.uriは空10012 appedではなく、空10013 stateではなく、空10015公衆号で第三者プラットフォームを許可していません.授権状態10016を確認してください.WeChatオープンプラットフォームがサポートされていないアプリを確認してください.公衆番号アプリを使用してください.
index.ページでコードを取得します.
フロントエンドajax要求:
コントローラ:
WeCharInfo:
説明
access_token
ウェブサイトの授権インターフェースは証明書を呼び出して、注意します:このaccess_tokenとベースサポートのaccess_tokenが違います
expiresin
access_tokenインターフェース呼出証明書のタイムアウト時間、単位(秒)
refresh_token
ユーザーがaccess_を更新するtoken
openid
ユーザー固有の識別情報は、公衆番号に注目していない場合、ユーザーは公衆番号のウェブページにアクセスし、ユーザーと公衆番号の唯一のOpenIDも発生することに注意してください.
scope
ユーザーが授権したスコープは、カンマ(,)で区切られます.
エラー時にWeChatはJSONパケットに戻ります.
ここにはURLではなくドメイン名(文字列です)を記入していますので、http:/などのプロトコルヘッダを付けないでください.
二:公衆番号メニューを定義し、授権ページにジャンプする(またはリンクを直接ジャンプする)
String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx59be073ef6eac757&redirect_uri=http://wx.intmote.com/debo_wx/index.html&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
CommonButton btn11 = new CommonButton();
btn11.setName(" ");
btn11.setType("view");
btn11.setUrl(url);
apid公衆番号の一意の表示redirect_.uri授権後のリダイレクトリンクアドレスは、url Encodeを使ってリンクを処理してください.
レスポンスタイプを返します.コードを記入してください.
scopeアプリケーションのライセンスのスコープ、snsapi_base(ライセンスページをはじかず、直接ジャンプして、ユーザーのopenidを取得するしかない)、snsapi_userinfo(ライセンスページをイジェクトすると、オプニティを通じてニックネーム、性別、所在地を取得することができます.また、関心がない場合でも、ユーザが授権すれば、その情報を得ることができます.)
stateリダイレクト後にstateパラメータを持参します.開発者はa-zA-Z 0-9のパラメータ値を記入できます.最大128バイトです.
ヽoo.ツredirectは、直接開いてもページ302をリダイレクトしても、このパラメータを持つ必要があります.
三:コードの取得
メニューボタンをクリックすると、ページがジャンプします.http://wx.intmote.com/debo_wx/index./?code=CODE&state=STATE.
エラーコードの説明を返します.
10003 redirect_uriドメイン名とバックグラウンドの配置が一致していません.この公衆番号は10005封じられました.この公衆番号はこれらのscopeの権限10006がありません.このテスト番号に注目しなければなりません.uriは空10012 appedではなく、空10013 stateではなく、空10015公衆号で第三者プラットフォームを許可していません.授権状態10016を確認してください.WeChatオープンプラットフォームがサポートされていないアプリを確認してください.公衆番号アプリを使用してください.
index.ページでコードを取得します.
var code = GetQueryString("code");
//
function GetQueryString(name){
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r!=null)return unescape(r[2]); return null;
}
四:コードによってaccess_を取得するtokenフロントエンドajax要求:
// openId
$.ajax({
url : "getOpenId.action",
dataType : "json",
type : "get",
data : "code="+GetQueryString("code"),
success : function(data){
// data openid, openid
}
})
バックグラウンドjavaコード:コントローラ:
/**
* openid
* @Title: getOpenId
* @param @param code
* @throws
*/
@RequestMapping(value = "getOpenId", method = RequestMethod.GET)
@ResponseBody
public String getOpenId(@RequestParam("code") String code)
{
System.out.println("cede="+code);
// code openId
JSONObject jsonDate = CommonUtil.getOpenId(code);
if(jsonDate.isNull("errcode")){
return jsonDate.getString("openid");
}
return "";
}
Common Util: /**
* openId
* @Title: getOpenId
* @Description: TODO
* @param code
* @return JSONObject
*/
public static JSONObject getOpenId(String code) {
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
String requestUrl = url.replace("APPID", WeChatInfo.WX_APPID).replace("SECRET", WeChatInfo.WX_APPSECRET).replace("CODE", code);
JSONObject jsonObject = httpsRequest(requestUrl, "GET", null);
return jsonObject;
}
apped公衆番号の唯一の識別secret公衆番号のappecretcodeは第一歩取得したcodeパラメータgrant_を記入します.typeはauthorization_と記入します.コードWeCharInfo:
public class WeChatInfo {
public static final String WX_APPID = "wx59bte0732ef6eeac757";
public static final String WX_APPSECRET = "3ade4c386340aa47bb55dae0d9b9ac7d73";
}
request Url要求が完了したJSONのパケットは以下の通りです.{ "access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE" }
パラメータ説明
access_token
ウェブサイトの授権インターフェースは証明書を呼び出して、注意します:このaccess_tokenとベースサポートのaccess_tokenが違います
expiresin
access_tokenインターフェース呼出証明書のタイムアウト時間、単位(秒)
refresh_token
ユーザーがaccess_を更新するtoken
openid
ユーザー固有の識別情報は、公衆番号に注目していない場合、ユーザーは公衆番号のウェブページにアクセスし、ユーザーと公衆番号の唯一のOpenIDも発生することに注意してください.
scope
ユーザーが授権したスコープは、カンマ(,)で区切られます.
エラー時にWeChatはJSONパケットに戻ります.
{"errcode":40029,"errmsg":"invalid code"}
終了しました.もしユーザーの他の情報を取得するなら、WeChatを参考にして文書を開発します.私は直接にopenidからデータベースに行ってユーザー情報を調べます.