前回の記事「LinuxへのSSH接続のタイムアウト問題を解決する方法(共有)」では、LinuxへのSSH接続のタイムアウト問題を解決する方法を紹介しました。次の記事は、Android アプリと WeChat 認証ログインと共有の間の完全な接続を理解するのに役立ちます。一定の参考値があり、困っている友人は参照できます。お役に立てれば幸いです。
Android アプリと WeChat の認証ログイン、共有、完全なドッキング
準備
アカウント システム
WeChat オープン プラットフォームに登録し、モバイル アプリケーションを作成し、一連の情報を入力し、アプリケーション プラットフォームで app
署名とパッケージ名を入力します。レビューに合格したら、 AppID
と AppSecret
SDK の読み込みと初期化
を取得します。 WeChat を読み込み中sdk
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
初期化
public class App extends Application { public static IWXAPI iwxapi; public void onCreate() { super.onCreate(); // 通过WXAPIFactory工厂,获取IWXAPI的实例 iwxapi = WXAPIFactory.createWXAPI(this, BuildConfig.WXAPP_ID, true); // 将应用的appId注册到微信 iwxapi.registerApp(BuildConfig.WXAPP_ID); //建议动态监听微信启动广播进行注册到微信 registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // 将该app注册到微信 iwxapi.registerApp(BuildConfig.APPLICATION_ID); } }, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP)); } }
WXAPP_ID
AppID
APPLICATION_ID
オープン プラットフォーム用に提供されるのは app
パッケージ名
認可ログイン部分
app
ルート ディレクトリ (##) に新しいパッケージを作成します#/java/com.xxx.xxx/)
wxapi、
wxapi に
WXEntryActivity という名前の新しい
Activity を作成します。次のようになります:
/java/com.xxx.xxx /wxapi/WXEntryActivity.java
public class WXEntryActivity extends Activity implements IWXAPIEventHandler { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 隐藏状态栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //接收到分享以及登录的intent传递handleIntent方法,处理结果 App.iwxapi.handleIntent(getIntent(), this); } @Override public void onReq(BaseReq baseReq) { } @Override public void onResp(BaseResp baseResp) { switch (baseResp.errCode) { case BaseResp.ErrCode.ERR_OK: //微信回调成功 String code = ((SendAuth.Resp) baseResp).code; //取得微信的code ,就可以干很多事情 finish(); break; case BaseResp.ErrCode.ERR_AUTH_DENIED://用户拒绝授权 finish(); break; case BaseResp.ErrCode.ERR_USER_CANCEL://用户取消 finish(); break; default: finish(); break; } } }
code を通じて
open 情報を取得します。
openid、
access_token など 一連の情報を待ちます。
private void getOpenInfo(String code) { OkHttpUtils.get().url("https://api.weixin.qq.com/sns/oauth2/access_token") .addParams("appid", BuildConfig.WXAPP_ID) .addParams("secret", BuildConfig.WXAPP_Secret) .addParams("code", code) .addParams("grant_type", "authorization_code") .build().execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { Toast.makeText(WXEntryActivity.this, "微信授权失败", Toast.LENGTH_LONG).show(); finish(); } @Override public void onResponse(String response, int id) { JSONObject jsonObject = JSONObject.parseObject(response); String openId = jsonObject.getString("openid"); String access_token = jsonObject.getString("access_token"); Log.v("openId", openId + "---" + access_token); // 取得openid 又可以干很多事情 // 在这里可以 对接 自己的 系统的用户信息等 finish(); } }); }
openid を通じてユーザーのニックネーム、アバター、その他の情報をクエリできます。
private void getUserInfo(String access_token, String openid) { OkHttpUtils.get().url("https://api.weixin.qq.com/sns/userinfo") .addParams("access_token", access_token) .addParams("openid", openid) .build().execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { finish(); Toast.makeText(WXEntryActivity.this, "微信授权失败", Toast.LENGTH_LONG).show(); } @Override public void onResponse(String response, int id) { //JSONObject jsonObject = JSONObject.parseObject(response); Log.v("response", response); } }); }共有部分画像の共有:
/** *bmp 分享图片 *width 缩略图宽 *height 缩略图高 *sence 分享场景 0:分享到对话,1:朋友圈 ,2:分享到收藏 */ public static void Image(Bitmap bmp, int width, int height, int sence) { //初始化 WXImageObject 和 WXMediaMessage 对象 WXImageObject imgObj = new WXImageObject(bmp); WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = imgObj; //设置缩略图 Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, width, height, true); //bmp.recycle(); msg.thumbData = bmpToByteArray(thumbBmp); //构造一个Req SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("img"); req.message = msg; req.scene = sence; req.userOpenId = App.userInfo.getOpenId(); //调用api接口,发送数据到微信 App.iwxapi.sendReq(req); }共有リンク
/** *url: 分享链接 *title: 分享标题 *desc: 分享描述 *thumbBmp: 分享缩略图 *sence: 分享场景 0:分享到对话,1:朋友圈 ,2:分享到收藏 */ public static void Url(String url, String title, String desc, Bitmap thumbBmp, int sence) { //初始化一个WXWebpageObject,填写url WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = url; //用 WXWebpageObject 对象初始化一个 WXMediaMessage 对象 WXMediaMessage msg = new WXMediaMessage(webpage); msg.title = title; msg.description = desc; msg.thumbData = bmpToByteArray(thumbBmp); //构造一个Req SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("webpage"); req.message = msg; req.scene = sence; req.userOpenId = App.userInfo.getOpenId(); //调用api接口,发送数据到微信 App.iwxapi.sendReq(req); }2つの補助機能
private static String buildTransaction(String type) { return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); } private static byte[] bmpToByteArray(Bitmap bmp) { ByteArrayOutputStream output = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, output); byte[] result = output.toByteArray(); try { output.close(); } catch (Exception e) { e.printStackTrace(); } return result; }注意事項
##この強制ライブラリはロードに失敗することが多く、時々混乱を引き起こしますimplementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
wechat-sdk-android-without-mta-6.6.5.aar などの対応するバージョン ライブラリをダウンロードして配置します。 libs ディレクトリにあります。手動でロードしてください
android { compileSdkVersion 28 repositories { //本地aar方式 flatDir { dirs 'libs' //this way we can find the .aar file in libs folder } } } implementation(name: 'wechat-sdk-android-without-mta-6.6.5', ext: 'aar')
共有後に問題を解決できない、つまり終了に失敗します実際には、コールバックの後は、そうではありません
BaseResp.ErrCode.ERR_OK 以上です。論理的判断の層が必要です: <pre class='brush:php;toolbar:false;'>public void onResp(BaseResp baseResp) {
switch (baseResp.errCode) {
case BaseResp.ErrCode.ERR_OK:
// 在此处应该还需要判断 回调成功类型。是登录还是分享,然后做相对应的操作
switch (baseResp.getType()) {
case ConstantsAPI.COMMAND_SENDAUTH: //登录成功的回调
String code = ((SendAuth.Resp) baseResp).code;
// 登录 todo
break;
case ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX: //分享成功
// 分享 todo
Toast.makeText(getApplicationContext(), "分享成功!", Toast.LENGTH_LONG).show();
finish();
break;
default:
finish();
break;
}
case BaseResp.ErrCode.ERR_USER_CANCEL://用户取消
finish();
break;
default:
finish();
break;
}
}</pre>
【終了】
推奨される学習:
Java ビデオ チュートリアル以上がAndroid アプリと WeChat の承認されたログインと共有 (コード共有) 間の完全な接続の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
