Androidを使って開発して、第三者の原生SDKにアクセスして、WeChat登録を実現します。
ウィーチャットオープンプラットフォーム:https://open.weixin.qq.com/
一、準備作業:
1.Android Studio環境下:build.gradleファイルには、次のような依存性を追加すればいいです。
1.WeChatを登録する:
私たちのプログラムを起動してから、WeChat端末が私たちのプログラムに応答できるようにするには、コードの中にWeChat端末のようなIDを登録しなければなりません。
(プログラムの入り口ActivityのOnCreatに登録することができます。MyApplicationに登録することもできます。または他の適切な場所で私たちのアプリケーションIDをWeChatに登録することもできます。ここではAppliationで:
そして、リストファイルのAndroid Manifest.xmlにこのクラスを宣言します。
補足知識:AndroidはWeChat sdkにアクセスし、WeChatを使用して授権する。
WeChat sdkにアクセスし、授権するには、最初の基本も最も重要なステップであり、アプリケーションのパケット名、アプリケーション署名(新浪署名ツールを使用して閲覧できるかどうかわからない場合、またはWeChatが提供するツール)、app id(WeChatアプリケーションが成功したら入手できる)の3つがWeChat上で申請されたものと一致しなければならないので、そうでない場合はない。
1、自分のプロジェクトでボタンを作成します。
2、Cons.javaのクラスを新設し、WeChat支払いに関するパラメータを保存する。
4、登録ページでクリックイベントを登録して、微信授にジャンプします。
scopeはユーザーの個人情報を取得するので、snsapi_に固定します。userinfo
stateで記入可能なパラメータは、政府の提案に従って記入したほうがいいです。csrf攻撃防止に使えます。
5、この場合はWeChatを起動して許可を受けることができますが、WeChatを返してもらうためには、以下の手順が必要です。
1)パッケージ名にwxapiフォルダを追加する(このフォルダ名はWeChat公式規定であり、一致しなければならない)
2)wxapiフォルダの下でActivityに引き継がれ、IWX API EventHandlerインターフェースを実現するWXEntry Activity類が追加されました。
6、Android Manifest.xmlにWXEntry Activityを配置する
1)権限を追加する
2)WXEntry Activityの配置を追加します。
その中にandroid:exportd=「true」を追加しなければなりません。そうでないと、コールバックを受信できません。
7、コンパイルして実行を生成すれば、WeChat登録を開始し、WeChatを取得して戻ってきます。
もしまだだめなら、以下の問題に注意してください。
1)アプリIDは正しいですか?
2)パッケージ名は申請時の記入と一致していますか?
3)署名の適用は申請時の記入と一致していますか?(署名生成ツールで比較してもいいです。一般的に発生する可能性がある場合は、申請用の署名パッケージ、デバッグ用の非署名パッケージなどがよくあります。
4)WXEntry Activity.javaファイルの位置は正しいですか?
5)Android Manifest.xmlの構成は正しいですか?
6)公衆番号、モバイルアプリケーション間でアカウントを統一すれば、unionIDを利用して需要を満たすことができます。WeChatが戻ってきたopenidはアプリIDに基づいて生成されていますので、H 5許可であればAndroidで得られたidと一致しないことになります。
最後にWeChatオープンプラットフォームの公式アドレスを添付します。https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=reource/ress_list&verify=1&id=open 1419317851&token=&lang=zh_CN。
以上、Androidを使って開発して、第三者の原生SDKにアクセスして、WeChat登録を実現するということは、小編集が皆さんに共有しているすべての内容です。参考にしていただければと思います。どうぞよろしくお願いします。
一、準備作業:
1.Android Studio環境下:build.gradleファイルには、次のような依存性を追加すればいいです。
dependencies {
implementation'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}
2.リストファイルのAndroid Manifest.xmlに権限を加える:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
二、アクセス:1.WeChatを登録する:
私たちのプログラムを起動してから、WeChat端末が私たちのプログラムに応答できるようにするには、コードの中にWeChat端末のようなIDを登録しなければなりません。
(プログラムの入り口ActivityのOnCreatに登録することができます。MyApplicationに登録することもできます。または他の適切な場所で私たちのアプリケーションIDをWeChatに登録することもできます。ここではAppliationで:
// 1. statid IWXAPI APPID
private static IWXAPI mWxApi;
private String WX_APPID = "";
// 2. SDK
mWxApi = WXAPIFactory.createWXAPI(this, WX_APPID, true);
mWxApi.registerApp(WX_APPID);
2.登録開始
if (BaseApplication.mWxApi!= null && BaseApplication.mWxApi.isWXAppInstalled()) {
final SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_fth";
BaseApplication.mWxApi.sendReq(req);
} else {
Toast.makeText(LoginActivity.this, " ", Toast.LENGTH_SHORT).show();
}
3.新しいカバンの名前はwxapiで、WXEntry Activityというクラスを新たに作っています。このクラス名とカバン名はWeChatで規定されています。木には方法があります。一致しなければなりません。そして、リストファイルのAndroid Manifest.xmlにこのクラスを宣言します。
<!-- WXEntryActivity -->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@style/NoTitleTranslucentTheme">
</activity>
4.WxEntry Activity類コードは以下の通りです。
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
private Bundle bundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BaseApplication. mIwapi.handleIntent(getIntent(), WXEntryActivity.this); //
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
BaseApplication. mIwapi.handleIntent(intent, WXEntryActivity.this);//
}
@Override
public void onReq(BaseReq req) {
System. out.println();
}
/**
* API:https://open.weixin.qq.com/ cgi- bin/showdocument ?action=dir_list&t=resource/res_list&verify=1&id=open1419317853 &lang=zh_CN
* Code https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code token openID。
* https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
*/
@Override
public void onResp(BaseResp arg0) {
bundle=getIntent().getExtras();
SendAuth.Resp resp = new SendAuth.Resp( bundle);
// code , access_token
if (resp. errCode == BaseResp.ErrCode. ERR_OK) {
String code = resp. token;
if(BaseApplication. isWxLogin){
getToken(code);
} else{
WXEntryActivity. this.finish();
}
} else{
WXEntryActivity. this.finish();
}
}
// accesstoken openID
private void getToken(String code){
MyProgressDialog. showDialog(WXEntryActivity.this, " ", " " );
HttpBase. get("https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxd7673d08f6c1963d&secret=223d726f966031f30125d0e4e7d4aed3&code=" +code+"&grant_type=authorization_code" , new JsonHttpResponseHandler(){
@Override
public void onSuccess( int statusCode, JSONObject response) {
super.onSuccess(statusCode, response);
getUserInfo(response.optString( "access_token"),response.optString( "openid"));
}
@Override
public void onFailure( int statusCode, Throwable e,
JSONObject errorResponse) {
// TODO Auto-generated method stub
super.onFailure(statusCode, e, errorResponse);
MyProgressDialog. closeDialog();
}
});
}
// token openID ,
private void getUserInfo(String token,String openID){
HttpBase. get("https://api.weixin.qq.com/sns/userinfo?access_token=" +token+"&openid=" +openID, new JsonHttpResponseHandler(){
@Override
public void onSuccess( int statusCode, JSONObject response) {
super.onSuccess(statusCode, response);
try {
String nickname = response.getString("nickname");//
String sex = response.getInt("sex") == 1 ? " " : " ";//
String header = response.getString( "headimgurl");//
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure( int statusCode, Throwable e,
JSONObject errorResponse) {
super.onFailure(statusCode, e, errorResponse);
MyProgressDialog. closeDialog();// dialog
HttpBase. onFailureTips(WXEntryActivity.this, errorResponse);
}
});
}
}
ここまで行けばオークです。補足知識:AndroidはWeChat sdkにアクセスし、WeChatを使用して授権する。
WeChat sdkにアクセスし、授権するには、最初の基本も最も重要なステップであり、アプリケーションのパケット名、アプリケーション署名(新浪署名ツールを使用して閲覧できるかどうかわからない場合、またはWeChatが提供するツール)、app id(WeChatアプリケーションが成功したら入手できる)の3つがWeChat上で申請されたものと一致しなければならないので、そうでない場合はない。
1、自分のプロジェクトでボタンを作成します。
2、Cons.javaのクラスを新設し、WeChat支払いに関するパラメータを保存する。
public class Constants {
public static final String APP_ID = "wxxxxxxx"; // app id
}
3、MyApplication.java類での実装4、登録ページでクリックイベントを登録して、微信授にジャンプします。
scopeはユーザーの個人情報を取得するので、snsapi_に固定します。userinfo
stateで記入可能なパラメータは、政府の提案に従って記入したほうがいいです。csrf攻撃防止に使えます。
5、この場合はWeChatを起動して許可を受けることができますが、WeChatを返してもらうためには、以下の手順が必要です。
1)パッケージ名にwxapiフォルダを追加する(このフォルダ名はWeChat公式規定であり、一致しなければならない)
2)wxapiフォルダの下でActivityに引き継がれ、IWX API EventHandlerインターフェースを実現するWXEntry Activity類が追加されました。
if(baseResp instanceof SendAuth.Resp){
SendAuth.Resp newResp = (SendAuth.Resp) baseResp;
// code
final String code = newResp.code;
}
得られたコードはWeChatの授権に成功した後に与えられた臨時手形で、codeによって関連のユーザーaccess_を取得することができます。tokenとopenid、そしてaccess_によるとtokenとopenidはユーザー情報を取得します。6、Android Manifest.xmlにWXEntry Activityを配置する
1)権限を追加する
2)WXEntry Activityの配置を追加します。
その中にandroid:exportd=「true」を追加しなければなりません。そうでないと、コールバックを受信できません。
7、コンパイルして実行を生成すれば、WeChat登録を開始し、WeChatを取得して戻ってきます。
もしまだだめなら、以下の問題に注意してください。
1)アプリIDは正しいですか?
2)パッケージ名は申請時の記入と一致していますか?
3)署名の適用は申請時の記入と一致していますか?(署名生成ツールで比較してもいいです。一般的に発生する可能性がある場合は、申請用の署名パッケージ、デバッグ用の非署名パッケージなどがよくあります。
4)WXEntry Activity.javaファイルの位置は正しいですか?
5)Android Manifest.xmlの構成は正しいですか?
6)公衆番号、モバイルアプリケーション間でアカウントを統一すれば、unionIDを利用して需要を満たすことができます。WeChatが戻ってきたopenidはアプリIDに基づいて生成されていますので、H 5許可であればAndroidで得られたidと一致しないことになります。
最後にWeChatオープンプラットフォームの公式アドレスを添付します。https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=reource/ress_list&verify=1&id=open 1419317851&token=&lang=zh_CN。
以上、Androidを使って開発して、第三者の原生SDKにアクセスして、WeChat登録を実現するということは、小編集が皆さんに共有しているすべての内容です。参考にしていただければと思います。どうぞよろしくお願いします。