亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

ホームページ WeChat アプレット WeChatの開発 Android開発の詳細(xì)なグラフィックとテキストの説明 WeChat認(rèn)証ログインとWeChat共有分析

Android開発の詳細(xì)なグラフィックとテキストの説明 WeChat認(rèn)証ログインとWeChat共有分析

Mar 15, 2017 pm 05:19 PM

この記事では主に寫真とテキストで詳細(xì)な説明を紹介しますAndroidWeChat認(rèn)証ログインとWeChat共有分析の開発 必要に応じて、詳細(xì)を?qū)Wぶことができます。

はじめに

モバイル インターネットの波の中で、インターネットに接続された APP は、自社のアプリケーションにアカウント システムが搭載されることを望んでいますが、多くのユーザーは必ずしもそれを購入する必要はありません。アプリケーションのアカウントに登録しますか? Weibo、Weibo、および QQ は、ほぼすべての人の攜帯電話にインストールする必要のあるアプリケーションになりました。そのため、WeChat、Weibo、および QQ は次のように言いました?!袱丹ⅰⅳ丹?、皆さんは私のアカウントを使用してホーム アプリケーションにログインできます。あなたは OAuth2.0 に従っています。まさにプロトコル標(biāo)準(zhǔn)です。したがって、サードパーティのソーシャル アカウント ログインは、テンセントの公式 WeChat オープン プラットフォームのオンライン ドキュメントが最新の SDK とは多少異なり、ログイン関連ドキュメントの構(gòu)造順序が多少亂れているため、多くの新興アプリケーションで選択されるようになりました。 WeChat オープン プラットフォームの公式オンライン ドキュメントを整理するために、今日ここで私の経験の一部を記録します。同時(shí)に、WeChat 共有は自分の APP の影響力を拡大することができるため、WeChat 共有機(jī)能は多くの開発者にとって必要な機(jī)能でもあり、同じ分野の將來の友人に役立つことを願(yuàn)ってここにまとめました。

WeChat ログイン

以下の內(nèi)容は Tencent Open Platform からの抜粋です: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_ リスト&t=リソース/res_list&verify=1&id=open1419317851&token=6bfe3acd2969037c7217667f24f8eeaf714e5113&lang=zh_CN

認(rèn)証プロセスの説明

WeChat OAuth2.0 認(rèn)証ログインにより、WeChat ユーザーは WeChat ID を使用できるようになります 安全性サードパーティへのログイン アプリケーションまたは Web サイトの場(chǎng)合、WeChat ユーザーが WeChat OAuth2.0 に接続されているサードパーティ アプリケーションへのログインを承認(rèn)した後、サードパーティはユーザーのインターフェース呼び出し資格情報(bào) (access_token) を取得できます。 access_token を使用して WeChat オープン プラットフォーム認(rèn)証関係インターフェイス呼び出しを行うと、WeChat ユーザーの基本的なオープン情報(bào)を取得し、ユーザーが基本的なオープン機(jī)能を?qū)g現(xiàn)できるようになります。

WeChat OAuth2.0 認(rèn)証ログインは現(xiàn)在、サーバー側(cè)でのアプリケーション認(rèn)証に適した authorization_code モードをサポートしています。このモデルの全體的なプロセスは次のとおりです:

1. WeChat ユーザーがサードパーティ アプリケーションの承認(rèn)を許可した後、サードパーティが WeChat 認(rèn)証ログイン リクエストを開始し、WeChat がアプリケーションを起動(dòng)するか、サードパーティ Web サイトにリダイレクトします。

2. code パラメータを介して AppID と AppSecret を追加し、
を介してインターフェース呼び出しを行い、ユーザーの基本データ リソースを取得します。ユーザーが基本的な操作を?qū)g裝できるように支援します。


access_token シーケンス図を取得します:

注: 開発者が

ログイン インターフェース

を呼び出す必要がある場(chǎng)合、開発者認(rèn)証を通過し、300Dayang を支払う必要があると公式オンライン ドキュメントに記載されています。実際、それは過去のことであり、オンラインドキュメントが更新されていないだけです。 以下、WeChatの認(rèn)証ログイン手順を順に説明していきます。すべてのネットワーク リクエストは GET リクエストです。


1. 一時(shí)的なチケットコードを取得します


2. access_token と openid を取得します


4. access_token を更新または更新します


一時(shí)的なチケットコードを取得します


右の最初の3つの矢印


{ 
  // 發(fā)出授權(quán)申請(qǐng)
  Final SendAuth.Req req = new SendAuth.Req();
  req.scope = "snsapi_userinfo";
  req.state = "wechat_sdk_微信登錄,分享demo_test";
  api.sendReq(req);
}
左の2つの矢印のプロセスはコードに反映されています:


public void onResp(BaseResp resp) ;// 這個(gè)回調(diào)接口位于IWXAPIEventHandler中

返されるデータはそれぞれ、ログイン認(rèn)証を要求する場(chǎng)合、これは SendAuth.Resp のインスタンスであり、送信されるデータは次のとおりです:


ErrorCode: ERR_OK = 0 (ユーザーが同意) ERR_AUTH_DENIED = -4 (ユーザーが認(rèn)証を拒否); 2 (ユーザーキャンセル)


code: ユーザーが access_token と交換するコード。ErrCode が 0 の場(chǎng)合にのみ有効

  1. state: サードパーティプログラムによって送信されたリクエストの一意性を識(shí)別するために使用されるフラグ。 sendReq がサードパーティ プログラムによって呼び出された場(chǎng)合、WeChat 端末によって返される受信、狀態(tài)

    文字列
  2. の長(zhǎng)さは 1K
  3. を超えることはできません
  4. lang:微信客戶端當(dāng)前語言

  5. country:微信客戶端當(dāng)前國家

以上數(shù)據(jù)均以static String形式存在SendAuth.Resp的resp對(duì)象中。

注意:當(dāng)使用微信提供最新的SDK/library時(shí),上面有些數(shù)據(jù)是不存在,微信開放平臺(tái)的文檔和API及SDK沒有同步更新。讀者可使用最下方微信登錄,分享demo中的筆者使用的jar包構(gòu)建工程。

獲取access_token & openid

最后一條向右的箭頭表示:使用得到的code,獲取access_token,openid,接口為:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

注意:微信的接口鏈接是使用SSL的安全鏈接,普通的HttpClient訪問會(huì)導(dǎo)致應(yīng)用崩潰或報(bào)錯(cuò),詳細(xì)方法請(qǐng)下載最下方的微信登錄,分享demo代碼

參數(shù)說明

  • appid: 應(yīng)用唯一標(biāo)識(shí),在微信開放平臺(tái)提交應(yīng)用審核通過后獲得

  • secret:應(yīng)用密鑰AppSecret,在微信開放平臺(tái)提交應(yīng)用審核通過后獲得

  • code :填寫第一步獲取的code參數(shù)

  • grant_type:固定值,填authorization_code

最下方向左的箭頭表示使用code訪問完鏈接返回的數(shù)據(jù),json攜帶的數(shù)據(jù)有:

  • access_token:接口調(diào)用憑證

  • expires_in:access_token的有效期,一般為7200(秒),也即是兩小時(shí)

  • refresh_token:用戶刷新access_token

  • openid:授權(quán)用戶唯一標(biāo)識(shí)

  • scope:用戶授權(quán)的作用域,使用逗號(hào)(,)分隔

檢查access_token是否有效

由于access_token有效期為兩小時(shí),所以進(jìn)行下一步操作前最好進(jìn)行一次檢查,接口為:
https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID

傳入的參數(shù)為accesss_token和openid。

access_token有效時(shí)返回的json是:


{ 
"errcode":0,"errmsg":"ok"
}

失效時(shí)的返回?cái)?shù)據(jù)為:


{ 
"errcode":40003,"errmsg":"invalid openid"
}

如果access_token有效,則跳過下一步,失效時(shí)需要刷新或續(xù)期access_token。

刷新或續(xù)期access_token

接口說明

access_token是調(diào)用授權(quán)關(guān)系接口的調(diào)用憑證,由于access_token有效期(目前為2個(gè)小時(shí))較短,當(dāng)access_token超時(shí)后,可以使用refresh_token進(jìn)行刷新,access_token刷新結(jié)果有兩種:

1.若access_token已超時(shí),那么進(jìn)行refresh_token會(huì)獲取一個(gè)新的access_token,新的超時(shí)時(shí)間;

2.若access_token未超時(shí),那么進(jìn)行refresh_token不會(huì)改變access_token,但超時(shí)時(shí)間會(huì)刷新,相當(dāng)于續(xù)期access_token。

refresh_token擁有較長(zhǎng)的有效期(30天),當(dāng)refresh_token失效的后,需要用戶重新授權(quán)。

刷新accessToken接口為:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

參數(shù)說明:

  • appid:應(yīng)用唯一標(biāo)識(shí)

  • grant_type:固定值,填refresh_token

  • refresh_token:填寫前面獲取到的refresh_token的值

返回的json數(shù)據(jù)有:

  • access_token:接口調(diào)用憑證

  • expires_in:access_token接口調(diào)用憑證超時(shí)時(shí)間,單位(秒)

  • refresh_token:用戶刷新access_token

  • openid:授權(quán)用戶唯一標(biāo)識(shí)

  • scope:用戶授權(quán)的作用域,使用逗號(hào)(,)分隔

獲取微信用戶詳細(xì)信息

獲取access_token,openid后,就可以用來獲取更多用戶信息,比如微信昵稱,頭像,性別等。接口為:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

可獲取的json攜帶的數(shù)據(jù)有:

  • openid:普通用戶的標(biāo)識(shí),對(duì)當(dāng)前開發(fā)者帳號(hào)唯一

  • nickname:普通用戶昵稱

  • sex:普通用戶性別,1為男性,2為女性

  • province:普通用戶個(gè)人資料填寫的省份

  • city:普通用戶個(gè)人資料填寫的城市

  • country:國家,如中國為CN

  • headimgurl:用戶頭像,最后一個(gè)數(shù)值代表正方形頭像大?。ㄓ?、46、64、96、132數(shù)值可選,0代表640*640正方形頭像),用戶沒有頭像時(shí)該項(xiàng)為空

  • privilege:用戶特權(quán)信息,json數(shù)組,如微信沃卡用戶為(chinaunicom)

  • unionid:用戶統(tǒng)一標(biāo)識(shí)。針對(duì)一個(gè)微信開放平臺(tái)帳號(hào)下的應(yīng)用,同一用戶的unionid是唯一的。

微信官方建議:

開發(fā)者最好保存unionID信息,以便以后在不同應(yīng)用之間進(jìn)行用戶信息互通。

微信登錄的流程結(jié)束了, 至于開發(fā)者需要將那些用戶信息上傳到自家的app服務(wù)器就取決于開發(fā)者了。

微信分享

1、微信分享分為微信好友分享,朋友圈分享,當(dāng)然,還有收藏也是共用分享的接口,無需授權(quán)登錄即可調(diào)用分享接口。

2、由于好友分享,朋友圈分享和收藏只是一個(gè)參數(shù)的區(qū)別,所以下面只講好友分享,具體的可以下載最下方的微信登錄,分享demo源碼進(jìn)行查看。

3、微信可以分享的內(nèi)容包括,純文字,圖片,鏈接,音樂,視頻,app,emoji表情等。

微信分享流程

1、在你的工程里面新建一個(gè)wxapi包,并且新建一個(gè)WXEntryActivity,繼承Activity,或其他Activity(這兩步是必須的,微信開發(fā)文檔中有提到),詳見:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN

2、并在manifest文件里面加上exported屬性,設(shè)置為true。

3、實(shí)現(xiàn)一個(gè)IWXAPIEventHandler接口。

微信發(fā)送的請(qǐng)求將回調(diào)到onReq方法,發(fā)送到微信請(qǐng)求的響應(yīng)結(jié)果將回調(diào)到onResp方法

在WXEntryActivity中將接收到的intent及實(shí)現(xiàn)了IWXAPIEventHandler接口的對(duì)象傳遞給IWXAPI接口的handleIntent方法,示例如下:


api.handleIntent(getInent(),this);

當(dāng)微信發(fā)送請(qǐng)求到你的應(yīng)用,將通過IWXAPIEventHandler接口的onReq方法進(jìn)行回調(diào),類似的,應(yīng)用請(qǐng)求微信的響應(yīng)結(jié)果將通過onResp回調(diào)。

注意

如果需要混淆代碼,為了保證sdk的正常使用,需要在proguard.cfg加上下面兩行配置:


-keep class com.tencent.mm.sdk.** { 
 *; 
 }

微信分享詳細(xì)代碼流程是:


IWXAPI api = WXAPIFactory.createWXAPI(this, APP_ID, false);// 傳入申請(qǐng)到的appid,得到一個(gè)IWXAPI的實(shí)例
api.registerApp(APP_ID);// 將app注冊(cè)到微信列表,我不知道這是什么意思,有知道的請(qǐng)告訴我,謝謝!

// 開始分享純文本到給好友
WXTextObject textObj = new WXTextObject();
textObj.text = text;

// 用WXTextObject對(duì)象初始化一個(gè)WXMediaMessage對(duì)象
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = textObj;

// 發(fā)送文本類型的消息時(shí),title字段不起作用
// msg.title = "Will be ignored";
msg.title = "分享文字標(biāo)題";
msg.description = text;

// 構(gòu)造一個(gè)Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("text"); // transaction字段用于唯一標(biāo)識(shí)一個(gè)請(qǐng)求
req.message = msg;

req.scene = SendMessageToWX.Req.WXSceneTimeline;// 表示發(fā)送場(chǎng)景為朋友圈,這個(gè)代表分享到朋友圈
// req.scene = SendMessageToWX.Req.WXSceneSession;//表示發(fā)送場(chǎng)景為好友對(duì)話,這個(gè)代表分享給好友
// req.scene = SendMessageToWX.Req.WXSceneFavorite;// 表示發(fā)送場(chǎng)景為收藏,這個(gè)代表添加到微信收藏
// 調(diào)用api接口發(fā)送數(shù)據(jù)到微信 
api.sendReq(req);

上面大致的表現(xiàn)了一個(gè)分享純文本給好友的場(chǎng)景,如果需要分享到朋友圈,只需要更改req.scene字段值。

1、其中IWXAPI.registerAPP(APP_ID)是官方demo中的一行代碼,表示的是將app注冊(cè)到微信列表,我并不知道有什么用,所謂的微信列表出現(xiàn)在哪兒?該行代碼刪除后,仍然可以獲取登錄授權(quán),實(shí)現(xiàn)分享等功能。有知道的請(qǐng)告訴我,謝謝!

2、目前筆者遇到無法分享在線圖片WXImageObject的問題,分享在線圖片時(shí)出現(xiàn)分享界面右上角“發(fā)送”按鈕灰色,無法點(diǎn)擊的情況,希望分享成功的朋友告訴我,謝謝!問題如下圖

要分享鏈接,圖片,音樂,視頻等需要將WXTextObject 對(duì)象改成對(duì)應(yīng)的obj對(duì)象。詳細(xì)請(qǐng)下載文章下方的微信登錄,分享demo。

后記

由于微信官方demo中并未提供微信登錄的代碼示例,分享的代碼很齊全,可是分享在線圖片的代碼在我這里卻又問題,所以筆者將自己的一些經(jīng)驗(yàn)和遇到的坑總結(jié)在這里,包括了微信第三方登錄,微信分享的內(nèi)容,希望對(duì)大家有所幫助。也希望筆者在文中提到的問題有熱心人能夠解答


//1、 注冊(cè)到微信列表有什么用,微信列表在哪兒可以看到
IWXAPI.registerApp(APP_ID);
//2、 我為什么無法使用以下代碼分享在線圖片
WXImageObject imgObj = new WXImageObject();
imgObj.imageUrl = imgUrl;// 在線圖片鏈接

WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = imgObj;

Bitmap bmp = BitmapFactory.decodeStream(new URL(url).openStream());
Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true);
bmp.recycle();
msg.thumbData = Util.bmpToByteArray(thumbBmp, true);

SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("img");
req.message = msg;
req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;
api.sendReq(req);

最近有人向我反映生成的apk無法正常運(yùn)行。在此進(jìn)行解釋:

デモ ソース コードによって生成された APK が正常に実行できない理由は、WeChat オープン プラットフォームにアプリケーションを追加するときに、パッケージ名、アプリケーション署名、および app_id がバインドされるためです。署名した APK は機(jī)能しません。デモ コードは參照と連絡(luò)のみを目的としています。

以上がAndroid開発の詳細(xì)なグラフィックとテキストの説明 WeChat認(rèn)証ログインとWeChat共有分析の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)