电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

uniapp+.net core實現微信小程序獲取手機號功能

瀏覽:267日期:2022-06-08 13:03:35
目錄
  • 獲取手機號
    • 注意:
  • 使用方法
    • 前端
      • template
      • js
    • 后端
      • appsetting配置
      • Startup.cs
      • GlobalContext.cs
      • 調用
    • 獲取截圖

      獲取手機號

      從基礎庫 2.21.2 開始,對獲取手機號的接口進行了安全升級,以下是新版本接口使用指南。( 舊版本接口 目前可以繼續使用,但建議開發者使用新版本接口,以增強小程序安全性)

      因為需要用戶主動觸發才能發起獲取手機號接口,所以該功能不由 API 來調用,需用 button 組件的點擊來觸發。另外,新版本接口 不再 需要提前調用 wx.login 進行登錄。

      注意:

      • 目前該接口針對非個人開發者,且完成了認證的小程序開放(不包含海外主體)。需謹慎使用,若用戶舉報較多或被發現在不必要場景下使用,微信有權永久回收該小程序的該接口權限;
      • 在使用該接口時,用戶可使用微信綁定手機號進行授權,也添加非微信綁定手機號進行授權。若開發者僅通過手機號作為業務關聯憑證,在重點場景可適當增加短信驗證邏輯。

      使用方法

      需要將 button 組件 open-type 的值設置為 getPhoneNumber ,當用戶點擊并同意之后,可以通過 bindgetphonenumber 事件回調獲取到動態令牌 code ,然后把 code 傳到開發者后臺,并在開發者后臺調用微信后臺提供的 phonenumber.getPhoneNumber 接口,消費 code 來換取用戶手機號。每個 code 有效期為5分鐘,且只能消費一次。

      注: getPhoneNumber 返回的 codewx.login 返回的 code 作用是不一樣的,不能混用。

      前端

      template

      使用getphonenumber獲取回調code

      //小程序寫法<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>//uni-app寫法<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">微信用戶一鍵登錄</button>

      js

      調用服務器的url,消費 code 來換取用戶手機號

      methods: {    getPhoneNumber: function(e) {var that = this;var userPhone = uni.getStorageSync("userPhone");if(userPhone != ""){    getApp().globalData.userPhone = userPhone;    uni.navigateTo({url: "personal"    });    return;}if (e.detail.errMsg == "getPhoneNumber:ok") {    //端口號是由后端服務器生成    wx.request({url: "后端服務URL",data: {    code: e.detail.code},method: "get",success: function(res) {    uni.setStorageSync("userPhone", res.data);    getApp().globalData.userPhone = res.data;    uni.navigateTo({url: "personal"    });},fail: function(res) {    console.log(res.errMsg)}    })}    }}

      后端

      后端使用.net core配置api

      appsetting配置

      "Wx": {    "appid": "",    "secret": "",    "baseurl": "https://api.weixin.qq.com/",    "getToken": "cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}",    "getuserphonenumber": "wxa/business/getuserphonenumber?access_token={0}"  }

      Startup.cs

      注冊HttpClient調用微信API

      public void ConfigureServices(IServiceCollection services) {       services.AddHttpClient("WxClient", config =>     {config.BaseAddress = new Uri(Configuration["Wx:baseurl"]);config.DefaultRequestHeaders.Add("Accept", "application/json");    });}
      public void Configure(IApplicationBuilder app, IWebHostEnvironment env){   GlobalContext.HttpClientFactory = app.ApplicationServices.GetService<IHttpClientFactory>();}

      GlobalContext.cs

      獲取token方法與獲取手機號方法,通過HTTPClient調用獲取Token方法,用Token和Code調用 getuserphonenumber獲取用戶手機號

      using System;using System.Reflection;using System.Text;using Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.Configuration;using Microsoft.Extensions.DependencyInjection;using Microsoft.AspNetCore.StaticFiles;using Microsoft.Extensions.Hosting;using Microsoft.AspNetCore.Http;using System.Net.Http;using Newtonsoft.Json;namespace YiSha.Util{    public class GlobalContext    {public static IHttpClientFactory HttpClientFactory { get; set; }public static IConfiguration Configuration { get; set; }public static string Token { get; set; }public static DateTime TimeOutDate { get; set; }/// <summary>/// 獲取Token/// </summary>/// <returns>Item1 Token;Item2 是否成功</returns>public static Result GetToken(){    //判斷Token是否存在 以及Token是否在有效期內    if (string.IsNullOrEmpty(Token) || TimeOutDate > DateTime.Now)    {//構造請求鏈接var requestBuild = Configuration["Wx:getToken"];requestBuild = string.Format(requestBuild,  Configuration["Wx:appid"],  Configuration["Wx:secret"]       );using (var wxClient = HttpClientFactory.CreateClient("WxClient")){    var httpResponse = wxClient.GetAsync(requestBuild).Result;    var dynamic = JsonConvert.DeserializeObject<dynamic>(  httpResponse.Content.ReadAsStringAsync().Result  );    if (dynamic.errmsg == null)//刷新Token    {Token = dynamic.access_token;var expires_in = Convert.ToDouble(dynamic.expires_in);TimeOutDate = DateTime.Now.AddSeconds(expires_in);return new Result(Token);    }    else    {return new Result(errMsg:dynamic.errmsg);    }}    }    else    {return new Result(Token);     }}public static Result GetUserPhoneNumber(string code){    var token = GetToken();    if(!token.isSuccess)    {return token;    }    //構造請求鏈接    var requestBuild = Configuration["Wx:getuserphonenumber"];    requestBuild = string.Format(requestBuild, token.data);    //建立HttpClient    using (var wxClient = HttpClientFactory.CreateClient("WxClient"))    {string content = $"{{\"code\":\"[code]\"}}";byte[] data = Encoding.UTF8.GetBytes(content);var bytearray = new ByteArrayContent(data);var httpResponse = wxClient.PostAsync(requestBuild, bytearray).Result;var dynamic = JsonConvert.DeserializeObject<dynamic>(     httpResponse.Content.ReadAsStringAsync().Result     );if (dynamic.errmsg == "ok")    return new Result(dynamic.phone_info.phoneNumber.ToString());else    return new Result(errMsg: dynamic.errmsg.ToString());    }}/// <summary>///  返回消息/// </summary>public class Result{    public Result()    {    }    /// <summary>    /// 正確    /// </summary>    /// <param name="data"></param>    public Result(string data)    {this.data = data;this.isSuccess = true;    }    /// <summary>    /// 錯誤    /// </summary>    /// <param name="errMsg"></param>    /// <param name="isSuccess"></param>    public Result(string errMsg,bool isSuccess = false)    {this.errMsg = errMsg;this.isSuccess = isSuccess;    }    public string data { get; set; }    public string errMsg { get; set; }    public bool isSuccess { get; set; }}    }}

      調用

      [HttpGet]public string GetPhone(string code){    var phone = GlobalContext.GetUserPhoneNumber(code);    if(!phone.isSuccess)    {//錯誤處理    }    return phone.data;}

      獲取截圖

      文檔傳送門:

      獲取手機號: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html

      到此這篇關于uniapp+.net core實現微信小程序獲取手機號的文章就介紹到這了,更多相關uniapp .net core小程序獲取手機號內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

      標簽: ASP.NET
      主站蜘蛛池模板: 化妆品加工厂-化妆品加工-化妆品代加工-面膜加工-广东欧泉生化科技有限公司 | 武汉高低温试验机-现货恒温恒湿试验箱-高低温湿热交变箱价格-湖北高天试验设备 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 消电检公司,消电检价格,北京消电检报告-北京设施检测公司-亿杰(北京)消防工程有限公司 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | China plate rolling machine manufacturer,cone rolling machine-Saint Fighter | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 微波消解仪器_智能微波消解仪报价_高压微波消解仪厂家_那艾 | 谷歌关键词优化-外贸网站优化-Google SEO小语种推广-思亿欧外贸快车 | 大流量卧式砂磨机_强力分散机_双行星双动力混合机_同心双轴搅拌机-莱州市龙跃化工机械有限公司 | 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | 生物风-销售载体,基因,质粒,ATCC细胞,ATCC菌株等,欢迎购买-百风生物 | 北京办公室装修,办公室设计,写字楼装修-北京金视觉装饰工程公司 北京成考网-北京成人高考网 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 石家庄律师_石家庄刑事辩护律师_石家庄取保候审-河北万垚律师事务所 | 免费B2B信息推广发布平台 - 推发网 | 甲级防雷检测仪-乙级防雷检测仪厂家-上海胜绪电气有限公司 | 电镀电源整流器_高频电解电源_单脉双脉冲电源 - 东阳市旭东电子科技 | 湖南档案密集架,智能,物证,移动,价格-湖南档案密集架厂家 | 婚博会2024时间表_婚博会门票领取_婚博会地址-婚博会官网 | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 陕西安玻璃自动感应门-自动重叠门-磁悬浮平开门厂家【捷申达门业】 | 贵阳用友软件,贵州财务软件,贵阳ERP软件_贵州优智信息技术有限公司 | 番茄畅听邀请码怎么输入 - Dianw8.com | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | SEO网站优化,关键词排名优化,苏州网站推广-江苏森歌网络 | 博莱特空压机|博莱特-阿特拉斯独资空压机品牌核心代理商 | Brotu | 关注AI,Web3.0,VR/AR,GPT,元宇宙区块链数字产业 | 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 环氧铁红防锈漆_环氧漆_无溶剂环氧涂料_环氧防腐漆-华川涂料 | 万师讲师网-优质讲师培训师供应商,讲师认证,找讲师来万师 | 油冷式_微型_TDY电动滚筒_外装_外置式电动滚筒厂家-淄博秉泓机械有限公司 | 流量卡中心-流量卡套餐查询系统_移动电信联通流量卡套餐大全 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 据信,上课带着跳 D 体验-别样的课堂刺激感受引发网友热议 | 济南冷库安装-山东冷库设计|建造|冷库维修-山东齐雪制冷设备有限公司 | 软文推广发布平台_新闻稿件自助发布_媒体邀约-澜媒宝 |