首頁 > web前端 > uni-app > 主體

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

青灯夜游
發布: 2021-08-31 18:28:12
轉載
15702 人瀏覽過

uniapp上如何實作安卓app微信登入功能?以下這篇文章跟大家分享一下uniapp上實現安卓app微信登入的權限申請、開發的具體操作流程,希望對大家有幫助!

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

微信開放平台提供了微信的一些開放接口,例如微信登錄、分享支付等,為其他各平台應用提供支援服務。網路資料比較鬆散,加上一些陌生概念,使得簡單流程並沒有串連起來,本文總結了uniapp上實現安卓app微信登入的權限申請、開發的具體操作流程,希望對你有用。

首先來看下開發微信登入功能的整體流程,我整理了一個總流程圖,幫助你在理解後面的內容時更有條理:

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

可以看出來,開發一個微信登入還是有點麻煩的呀,下面來讓我一步步地詳細介紹吧!

1、註冊一個微信開放平台帳號

#首先註冊一個微信開放平台帳號,微信的平台一共有4個,這個開放平台就是開放微信的登入分享支付等內容給app、網頁、小程式等使用。具體過程就不細說了,郵箱帳號要注意不要與微信其他地方用到的相衝突就行了。

2、開發者資質認證

帳號註冊成功後登錄,要開發微信登入這些功能也要進行開發者資質認證。現在開放平台的註冊對個人是開放的,但是開發者資質認證只對企事業單位開放,而且認證要交300塊。我用的企業認證,申請過程中要用到企業相關資質證書,資料齊全流程挺快的,兩三天左右可以搞定吧,發票申請挺慢的,要一個月左右。

3、在開放平台申請行動應用程式

#認證成功後,進入管理中心,選擇行動應用,建立行動應用,依步驟來就行了,可能唯一會讓你卡住的就是應用簽名了。我走到這一步時完全是懵逼狀態,不知道啥是應用程式簽名。

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

4、應用程式簽名產生

看上面的說明,應用簽章主要是用來進行身份驗證,之所以說是二次校驗,是相對於登入使用者來說的。一般情況下,你登入了開放平台就可以申請了,現在多了這個簽名,你得再折騰一下,證明自己擁有這個應用的開發權限。一般情況下,安卓的app發佈在小廠大都是用的公共測試證書,現在要生成應用簽名就得用自有證書了。有了自有證書,就可以產生微信開放平台要的這個應用程式簽名了。那這張自有證書怎麼來呢?接下來,看看怎麼折騰出來這個自有證書和應用程式簽名吧。

產生自有憑證

#1)、安裝jre環境

#jre是java開發環境,可以用cmd指令視窗用java指令判斷下目前環境是否有jre,如果提示'java' 不是內部或外部指令,也不是可執行的程式或批次檔,那說明沒有安裝;如果像這樣輸出內容就是已經安裝過了:

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

#如果沒有安裝就要下載jre安裝套件:www.oracle. com/java/techno…

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

安裝好之後,重新開啟cmd,再次輸入java就可以看到正常輸出相關內容了。接下來,也要把jre安裝路徑加入到系統環境變數中:

d:  
set PATH=%PATH%;"C:\Program Files\Java\jre1.8.0_201\bin"
登入後複製

用cmd輸入以上指令,第一行意思是切換到d盤,這個目錄隨意,是用來存放接下來會產生的簽章憑證的,你可以再建一個資料夾然後cd進去。回車後,在第二行意思是將jre指令加入到臨時環境變數中,後面的位址根據你的jre實際安裝位址來。這步之後,後面的操作產生的檔案就會產生在目前資料夾中。

2)、產生簽章憑證

上面步驟正常後,就可以輸入下面的keytool -genkey指令就可以產生憑證了。這裡要注意下,testalias 和 test.keystore中的'test'都是可以修改的,可以替換為自己專案中的名字。

keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
登入後複製

回车后,输入密码,比如123456,密码看不见的,不要输错了,后面的按提示填就可以了,一般输入英文或拼音。最后提示是否正确时,不要回车了,输入y确认正确,否则要再重来一次。

确认后,又提示密钥口令,这个直接回车相同就行。

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

如果提示这个,就把这个指令复制了粘贴执行,输入前面设置的口令123456就可以了。

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

最后在当前执行命令的文件夹里就能看到应用证书了。

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

生成签名

前面是生成证书,这一步终于可以生成签名了。

3)、使用自有证书打包

这一步很简单,用hbuilderx进行app云打包,在弹出框中选择安卓的自有证书打包方式。这个自有证书就是我们刚才生成的证书,兴不兴奋,我们也是有证书的人了!?下面三栏,别名、密码都是前面的操作步骤中写过的,没忘记就写上吧,然后选择证书文件,剩下的都是常规操作,最后打包就可以了。

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

4)、用签名生成工具生成签名

先到微信开放平台下载签名生成工具,下载好之后,在手机端安装,输入安卓包名。

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

这里有坑,要注意下,uniapp的mainfest.json文件配置中,appid必须是'_UNI_'开头,所以你的配置文件中得是'_UNI_'开头的,但是打包时的包名跟那个配置又是两个体系,互不影响,你可以在这里把名字改下,把uni这个头去掉。因为这个包名后面要跟ios版本一起用,你得跟ios一样,相信打过包的人应该能明白我在说啥。

输入正确的包名(去掉了'UNI'开头),点击下面的按钮就生成了一串id,这个就是——应用签名!真是费劲!

uniapp上如何實作安卓app微信登入功能(操作流程摘要)

5、按开放平台流程申请应用

有了签名,你就可以按照微信开放平台的流程申请移动应用了,就是本文的第二张图,输入签名,一步步走就行。

1uniapp上如何實作安卓app微信登入功能(操作流程摘要)

最后就是下面这样子了,代表你提交成功,可以耐心的等了(三天了,没变化,最后过了七八天才通过,中间按要求修改了两次):

1uniapp上如何實作安卓app微信登入功能(操作流程摘要)

等审核通过,就可以申请微信登录等功能了。

1uniapp上如何實作安卓app微信登入功能(操作流程摘要)

最后要说的一点就是,app或者你资料中提交的相关域名网站不要给登录界面,否则可能会审核不通过,因为他们进不去,看不了当然无法审核。

6、获取appid和appsecret

移动应用的审核通过后,微信登录功能就会自动开放了,同时开放的还有分享、发送朋友等功能。

1uniapp上如何實作安卓app微信登入功能(操作流程摘要)

同时,你也可以获取到获取appid和appsecret,这个我自己保存越来,后面开发会用到的。

7、微信登录业务流程梳理

uniapp提供了微信登录api,不过我们首先要清楚微信登录的流程,因为微信登录要配合我们系统自身的业务。我在这里梳理了一张流程图,这张图就是上面总流程图的一部分,你可以对照参考,辅助你开发相关功能。

1uniapp上如何實作安卓app微信登入功能(操作流程摘要)

8、微信登录服务api调用

如果你按照前面的步骤拿到AppId和AppSecret信息,接下来就是按照这个流程来开发微信登录功能。在uniapp上开发app版本的微信登录功能需要调用uni的api还有h5+的api。 这里就直接给一个示例代码:

onLoad() {
	plus.oauth.getServices((services) => {
			this.weixinAuthService = services.find((service) => {
					return service.id === 'weixin'
			})
		});
},
methods: {
	appWxLogin() {
		var self = this;
		this.weixinAuthService.authorize(function(res) {
			//支持微信、qq和微博等
			uni.login({
				provider: 'weixin',
				success: function(loginRes) {
					// 微信用户信息存入本地,后期备用
					var auth = null;
					plus.oauth.getServices(function(services) {
						auth = services.find((service) => {
							return service.id === 'weixin'
						});
						try {
							uni.setStorageSync('auth_service', auth)
						} catch {
	
						}
					}, function(e) {
						console.log(e);
					});
					if (loginRes.authResult) {
						let access_token = loginRes.authResult.access_token;
						let openid = loginRes.authResult.openid;
						uni.request({
							method: 'POST',
							url: 'https://*********/wx-login/appwxlogin',
							data: {
								openid: openid
							},
							success: (res) => {
								console.log(res);
								//将openid存入本地缓存
								uni.setStorage({
									key: 'openid_key',
									data: res.data.openid
								});
								if (res.statusCode == 200 && res.data && res.data.username) {
									self.isFirstWXLogin = false;
									self.name = res.data.username;
									self.password = res.data.password;
									setTimeout(function() {
										self.tologin({
											username: res.data.username,
											password: res.data.password,
											encrypted: true
										})
									}, 0)
								} else {
									//首次登录,跳转到一个绑定账号的页面
									uni.navigateTo({
										url: 'wxlogin'
									});
								}
							},
							fail: (error) => {
								console.log(error);
							},
							complete: (e) => {
								console.log(e);
							}
						})
					} else {
	
					}
				},
				fail(e) {
					console.log(e);
				},
				complete(e) {
					console.log(e);
				}
			});
		}, function(error) {
			console.log(error)
		}, {
			scope: 'snsapi_userinfo'
		})
	}
}
登入後複製

注意几点: 

1、首先取到微信服务对象this.weixinAuthService。 

2、其次调用授权api——authorize,然后再调用uni.login这个api。

 3、uni.login成功后,如果想取得用户信息可以调用uni.getUserInfo,也可以调用plus.oauth.getServices,后者是h5+的api,前者也是基于后者的封装。 

4、代码中这个接口(/wx-login/appwxlogin)是一个本地服务,具体的业务就是把openid带到用户表中去查找,如果能找到,说明此用户绑定过微信,后端返回用户信息直接登录;如果没找到,就返回提示需要输入用户名密码登录,而且这个登录过程要带上openid,最终插入数据库。

这个api调用与业务开发流程应该比较好理解,我这里也不再画图了,应该都能看明白。 好了,uniapp开发安卓端的微信登录功能就介绍完了,如果对你有用就点个赞或者帮忙转发吧!谢谢鼓励!

推荐:《uniapp教程

以上是uniapp上如何實作安卓app微信登入功能(操作流程摘要)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!