精华内容
下载资源
问答
  • 微信登录

    2018-01-09 16:38:23
    使用第三方微信登录:直接调微信 api内部方法
    使用第三方微信登录:直接调微信 api内部方法
    展开全文
  • 课程讲解了Unity如何接入微信登录 微信分享 微信支付 支付宝支付
  • 小程序使用微信登录的优势 玩过小程序的同学都知道,很多小程序都是使用微信登录的,其实小程序并没有强制要求只能使用微信登录,我们完全可以像web网站一样使用用户名、邮箱、手机号、密码等登录方式,既然如此,...

    小程序使用微信登录的优势

    玩过小程序的同学都知道,很多小程序都是使用微信登录的,其实小程序并没有强制要求只能使用微信登录,我们完全可以像web网站一样使用用户名、邮箱、手机号、密码等登录方式,既然如此,为什么大多数的小程序还是使用微信登录呢,因为除了便利性以外,微信登录更重要的优势是整合了微信庞大的生态系统,以及对于产品策略的加持。

    可以从以下三个角度理解小程序使用微信登录的优势:

    • 从生态系统的角度上, 相对于其他应用端,以微信为入口的小程序最大的优势是拥有微信完善的生态系统,用户使用微信登录后可以使用微信提供给小程序的各种平台级能力,比如订阅消息、微信支付等。
    • 从用户体验的角度上, 用户能够很大程度上降低登录的复杂程度。想象一下,对比在小程序内用用户名密码登录和一键微信登录,哪种方式更容易被用户接受呢?结果不言而喻。
    • 从产品策略的角度上, 使用微信登录小程序能够根据用户的来源,制定特殊的产品策略,比如对于小程序的用户发放专属的优惠券。

    所以,可以得出小程序使用微信登录的三个主要优势:

    • 融入微信生态
    • 提高用户体验
    • 制定产品策略

    既然它这么有优势,那当然很有必要了解一下它的登录流程,其实微信官方文档也介绍了微信登录的过程,小程序登录-微信官方文档,可以直接从微信官方文档学习。

    下面这张图是微信官方文档给的,描述了小程序登录的整个过程。我们借助它来摸清微信登录的逻辑。
    在这里插入图片描述
    相信很多人第一次看到这张图的时候没看个几遍是看不懂的,特别是对于刚接触小程序的同学来说,图中整个流程涉及到了三种角色,六个术语,先理解他们的定位和含义,是我们看懂这个流程图的基础。

    首先,三种角色分别是小程序(客户端)开发者服务器(开发者自己的服务器)微信接口服务(微信处理登录请求的服务)

    • 客户端既是整个登录流程的发起者,获取临时登录凭证code,也是整个登录流程的终结者,存储登录态令牌token。

    • 不过客户端的所有信息和网络请求几乎都是可以被破解或拦截的,所以出于安全的考虑,小程序登录流程中的一些借口被限制不能在客户端中直接调用,而是需要在服务端发起,开发者服务的工作就是处理这些安全敏感的网络请求,体现为上图中使用code获取openid和session_key的请求,这个请求使用了微信提供的auth.code2Session接口。

    • 微信接口服务的工作对于开发者来说是不透明的,我们仅需要根据接口的规范,组装网络请求发送给它,然后根据返回的接口执行分发逻辑,微信服务器会验证网络请求的合法性,对于合法请求下发密钥session_key和用户openid

    六个术语分别是codeappidopenidappsecretsession_keytoken

    • code:小程序通过wx.login() API获取的,然后通过HTTP请求发送给开发者服务器,code强调’临时’两个字,有效期仅5分钟,并且仅能够使用一次,下次用需要重新获取。
    • appid:每个微信小程序在创建之后便会生成一个appid,标记了小程序的唯一性,等同于网站的URL(经过备案的)、APP的包名等标记应用唯一性的信息。
    • openid:微信号在某个应用程序中的唯一 ID。这里的“某个应用程序”指的是小程序、公众号、接入开放平台的应用。微信生态中目前有公众平台和开放平台两种,其中公众平台又细分为小程序和公众号,开放平台可以接入网站、移动应用等。同一个微信号在不同的应用程序中有不同的 openid。说得直接点就是,你在拼多多小程序的openid肯定是唯一的,但是你在拼多多小程序的openid和你在腾讯游戏小程序的openid肯定是不一样的。

    在微信生态下另外有一个标记微信号的唯一 ID:UnionId。这个 ID 跟应用程序无关。所以,可以简单地理解为 UnionId 与 appid 综合加密后的结果。UnionId 通常用来关联在不同应用程序中各个 openid ,比如同一个微信号在小程序和公众号内需要配置同样的权限,仅通过 openid 无法实现,便需要获取此微信号的 UnionId。

    • appsecret:它是小程序的密钥,可以在微信公众平台的后台管理系统中获取。appsecret 是非常私密的信息,所以微信在制定小程序登录的流程时,将携带此信息的网络请求限制在只能通过开发者服务器发送给微信接口服务,这样对于客户端来说是不可见的,进而降低了被泄露的可能性。与appid 不同的是,appsecret 可以被重置,但每次重置之后,历史的 appsecret 便会失效,所以请谨慎操作。
    • session_key:是对用户数据进行加密签名的密钥,微信服务器使用它将用户的数据进行加密和解密,可以简单地将session_key理解为获取用户数据的’绿卡’,登录之后所有涉及访问微信服务器的请求一般都要带上它,微信服务器会校验session_key的合法性。其实到这一步(即拿到了 openid 和 session_key )已经完成了小程序的登录流程,但对于一个应用程序来说,用户进行登录操作应该是’一劳永逸’的,即登录过一次之后在一定时间内的后续操作都不需要再次登录,用技术言语描述就是应该保存用户的登录态,也就是token
    • token:登录态是个逻辑词汇,token可以理解为登录态的具象化、数据化,在上面的流程图中,可以看到token是由开发者服务器创建的一个字符,而且需要跟openid和session_key相关联,关联完成之后开发者服务器将 token下发到客户端,客户端保存在本地,后续的所有请求均需要携带此 token,携带的方法并没有既定的规范,可以通过 URL Query、HTTP Body、Header 等,但通常建议通过 Header 传递,这样相对来说更安全一些。

    我觉得看流程图最好理解的方式就是跟着画一遍,可能我的悟性不够,总觉得要自己也画一遍,理解了才算真正理解,说到画流程图,我就想安利vscode的一个插件,

    展开全文
  • 微信登录 微信登录面对的问题: 怎么获取用户在微信的信息 怎么获取小程序用户的唯一身份标志 获取openid的方法 wx.login() 方法可以获取微信登录凭证code 使用code 可以向微信服务器换取微信用户的唯一识别...

    微信登录

    • 微信登录面对的问题:
      • 怎么获取用户在微信的信息
      • 怎么获取小程序用户的唯一身份标志

    获取openid的方法

    • wx.login() 方法可以获取微信登录凭证code
    • 使用code 可以向微信服务器换取微信用户的唯一识别标志openid
      • 微信服务器提供的接口地址:https://api.weixin.qq.com/sns/jscode2session?appid=<AppId>&secret=<AppSecret>&js_code=<code>&grant_type=authorization_code
      • AppId和AppSecret 是为了确保用code换openid的人是当前小程序的开发者

    AppId 是公开信息,泄露AppId不会带来安全风险
    AppSecret 是小程序秘钥,不能泄露,如果发现泄露需要到小程序管理平台进行重置。

    login.wxml

    <view class="cont">
      <view wx:if="{{hasUserInfo}}">
        {{userInfo.nickName}}您好,欢迎{{type}}
      </view>
      <view wx:else>
        <text>您好,请登录</text>
        <button type="primary" open-type="getUserInfo" bindgetuserinfo="getUserInfo">去授权</button>
      </view>
    </view>
    

    login.js

    // index.js
    // 获取应用实例
    const app = getApp()
    Page({
      data: {
        userInfo: {},
        hasUserInfo: false,
        type:''
      },
      onLoad() {
        if (app.globalData.userInfo) {
          this.setData({
            userInfo: app.globalData.userInfo,
            hasUserInfo: true
          })
        } else if (this.data.canIUse) {
          // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
          // 所以此处加入 callback 以防止这种情况
          app.userInfoReadyCallback = res => {
            this.setData({
              userInfo: res.userInfo,
              hasUserInfo: true
            })
          }
        } else {
          // 在没有 open-type=getUserInfo 版本的兼容处理
          wx.getUserInfo({
            success: res => {
              app.globalData.userInfo = res.userInfo
              this.setData({
                userInfo: res.userInfo,
                hasUserInfo: true
              })
            }
          })
        }
      },
      // 获取用户信息  getUserInfo 固定函数
      getUserInfo({detail:{userInfo}}) {
        console.log(userInfo);
        this.setData({
          userInfo,
          hasUserInfo:true
        })
     this.getCode().then(code=>this.getOpenId(code)).then(openid=>this.putOpenid(openid)).then(data=>{
          console.log(data);
        });
      },
      // 获取登录凭证code
      getCode(){
        return new Promise((resolve)=>{
          wx.login({
            success:({code})=>{
              console.log(code);
              resolve(code);
            },
          })
        })
      },
      // 发送code到微信后台获取openId
      getOpenId(code){
        const url = `https://api.weixin.qq.com/sns/jscode2session?appid=你的openid&secret=你的密钥&js_code=${code}&grant_type=authorization_code`;
        // 发起网络请求
        return new Promise((resolve)=>{
          wx.request({
            url,
            success:({data:{openid}})=>{
              resolve(openid);
              console.log(openid);
            }
          })
        })
      },
      // openid传给后端
      putOpenid(openid){
        const data = Object.assign({openid},this.data.userInfo)
        return new Promise((resolve)=>{
          wx.request({
            url: 'http://localhost:8080/',
            method:'POST',
            data,
            success({data}){
              resolve(data)
            }
          })
        })
      }
    })
    
    展开全文
  • 最近在开发app时,使用微信登录,获取到unionid与微信公众号里面使用微信登录的unionid不一致。当时就去查了一下资料。 UnionID 机制说明 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可...
    1. 问题描述

      最近在开发app时,使用微信登录,获取到unionid与微信公众号里面使用微信登录的unionid不一致。当时就去查了一下资料。
      
    2. UnionID 机制说明

      如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。

    3. 造成原因:

      app开发时,我用的是Hbuilderx 自己的appid,和开发者平台配置的不一样照成的。

    4. 解决方法

      将app打包安装到手机上就可以了,真机调试会用到hbuilder那边的。而打包后使用的就是微信开发者平台配置appid和appsecret。

    展开全文
  • Android微信登录

    千次阅读 2020-08-20 16:07:14
    微信登录 当我们做第三方微信登录时可供参考 1.首先我们做微信登录时 下载 SDK 及 API 文档 Android Studio 环境下: 在 build.gradle 文件中,添加如下依赖即可: //导入依赖 api '...
  • Android:微信登录,微信分享demo 源码

    千次下载 热门讨论 2015-09-11 17:46:25
    使用微信进行第三方登录,微信登录,微信分享,朋友圈分享的demo,了解详情,请进入:http://blog.csdn.net/xiong_it/article/details/48317527
  • 在微信小程序中,因为各种各样的原因我们会需要获取到用户的...微信登录 在此之前,需要将微信开放平台绑定小程序,才可获取unionid 错误示例: wx.login({ success: res =&amp;amp;amp;amp;amp;gt; { ...
  • 无论是个人还是公司,无需申请公众号,无需申请微信开放平台...2、电脑版网站做微信登录,需要去微信开放平台(不是公众平台,是另外一个平台)申请,然后要申请网站应用授权登录权限,需要提交企业资质,网站资料说...
  • 按照我所标注的修改,接入微信登录才可能成功,否则会出现如下错误 二:用友盟的第三方微信登录 以下是官方文档 明明已经获取了登录权限 却还是 那么,此时有两个解决方法 1.检查代码的 appkey...
  • uniapp框架开发APP—微信登录 需求说明: 我的项目需求是已有微信小程序项目,新增app项目,需要将微信小程序的用户和app端的用户相关联。 实现方法:在微信开放平台,在同一账户下分别创建移动应用和微信小程序...
  • 一:首先在模板文件上创建微信登录的图标 <buttonclass="login_wx"bindtap="wx_login"open-type="getUserInfo"> <view> <imagesrc="../image/wechat.png"></image> </view> <...
  • 微信接口调用,真的是难者不会,会者不难只要做过一遍之后以后再做就很简单了,当初我一个人因为么有人请教,在这一块耽误了好几天的时间,网上的教程也都搜过,可能因为没接触过吧,看...第二种:直接调起微信登录 ...
  • uniapp微信登录

    千次阅读 2019-09-11 10:00:07
    uniapp的微信登录其实已经内置了,我们只用配置好我们开方平台的appid 和 appsecret这两个参数 然后在我们的开放平台去配置我们的app信息 最后的话就是调用官方文档中的接口啦 ...
  • UNIAPP中H5微信登录

    千次阅读 2020-07-09 12:11:48
    UNIAPP中H5微信登录 UNIapp中自带封装好的接口,但是在打包成H5中,微信登录对于新手来说网上教程比较少,大部分是分享的教程 H5微信登录之前你需要先在微信公众平台配置js接口安全域名,切记地址不要带https或者...
  • vue实现微信公众号微信登录

    千次阅读 2019-09-11 09:40:46
    1.当点击微信登录的时候调用自定义的方法 weixinlogin 会让用户授权,当用户授权成功的时候会返回一个带code的地址 weixinlogin() { weixinAuthUrl().then(res => {//请求后台接口的方法 if (res.link) window....
  • 去掉微信登录二维码中的微信登录几个字的解决方法 通过分析,原来微信自己有参数可以去掉, 解决方法,如下: 链接中加上 &amp;popup=0&amp;href=https%3A%2F%2Fsta.gtimg.com%2Fqd5%2Fcss%2Fweixin.css...
  • 微信登录和微信支付实例配置教程

    千次阅读 2019-04-01 09:16:42
    Niushop微信登录和微信支付实例配置教程
  • 本文并不是教大家如何做微信登录和微信分享,那是需要接SDK的。 今天的东西很鸡肋,但有时候还挺需要的。 需求很简单,就是怎么能做到在Unity里写一个按钮,点击一下就打开微信。 其实实现起来也很简单Orz public ...
  • Unity 接入微信登录

    2020-08-08 10:22:22
    参考链接: iOS原生接入微信登录 Android平台接入微信登录
  • 微信开放平台开发 微信登录

    千次阅读 2016-01-12 17:54:18
    网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的...
  • 微信登录的code获取

    千次阅读 2015-04-05 20:00:59
    微信登录
  • pc端网站微信登录

    2020-04-30 16:15:37
    PC端网站的微信登录,首先要开通微信开放平台,跟微信公众号开发所需微信公众平台意思差不多。百度搜索微信开放平台,点击官网即可。 一.微信开放平台 这个平台的重点就是AppID、AppSecret和回调域名,后续用的到...
  • SpringBoot实现微信扫码登录功能让网站支持使用微信登录 此功能基于微信开放平台。实现此功能的前提是需要有微信开放平台帐号,并认证(需300¥)成功。 需要有公网可以访问的域名和IP。 一、微信开放平台...
  • 微信登录(加自动登录)

    千次阅读 2018-09-30 10:32:32
    微信登录有两种情况一种就是大家常见到的登录页面,确认登录用户亲自授权,另一种就是图片这种,无需用户同意就授权。做微信登录最重要的是获取到openid。 //微信登录获取openid //微信登录 snsapi_userinfo ...
  • 微信登录40163

    千次阅读 2019-04-07 17:21:52
    做了微信登录,小程序登录,公众号登陆,网页扫码登陆都没问题;最后是APP登陆,其中IOS对接没问题,直到Android对接时,出现了errcode = 40163,errmsg = "code been used",简直莫名其妙。也参考了网上的多种概述...
  • 比如小米和京东,在手机浏览器中打开(比如qq或者uc之类的),选择微信登录时,他可以调起微信app授权,然后确认授权后,又会跳回到原来的手机浏览器,并且已经是微信登录状态了。请问这个怎么弄的

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,915
精华内容 11,166
关键字:

微信登录