微信登录功能 /网站应用微信登录开发指南

准备工作

网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的 AppID 和AppSecret,申请微信登录且通过审核后,可开始接入流程。

授权流程说明

微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。 微信OAuth2.0授权登录目前支持authorization_code模式,适用于拥有 server 端的应用授权。该模式整体流程为:


1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据 code 参数;
2. 通过 code 参数加上 AppID 和AppSecret等,通过 API 换取access_token;
3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

获取access_token时序图:

第一步:请求CODE

第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在 PC 端打开以下链接: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致或 scope 不为snsapi_login。

参数说明

参数是否必须说明
appid应用唯一标识
redirect_uri请使用 urlEncode 对链接进行处理
response_type填code
scope应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login
state用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止 csrf 攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加 session 进行校验
lang界面语言,支持cn(中文简体)与en(英文),默认为cn

返回说明

用户允许授权后,将会重定向到redirect_uri的网址上,并且带上 code 和state参数

redirect_uri?code=CODE&state=STATE

若用户禁止授权,则不会发生重定向。

请求示例

登录一号店网站应用 https://test.yhd.com/wechat/login.do 打开后,一号店会生成 state 参数,跳转到 https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect 微信用户使用微信扫描二维码并且确认登录后,PC端会跳转到 https://test.yhd.com/wechat/callback.do?code=CODE&state=3d6be0a40sssssxxxxx6624a415e

将微信登录二维码内嵌到自己页面

为了满足网站更定制化的需求,我们还提供了第二种获取 code 的方式,支持网站将微信登录二维码内嵌到自己页面中,用户使用微信扫码授权后通过 JS 将code返回给网站。 JS微信登录主要用途:网站希望用户在网站内就能完成登录,无需跳转到微信域下登录后再返回,提升微信登录的流畅性与成功率。 网站内嵌二维码微信登录 JS 实现办法:

步骤1:在页面中先引入如下 JS 文件(支持https):

http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js

步骤2:在需要使用微信登录的地方实例以下 JS 对象:

 var obj = new WxLogin({
 self_redirect:true,
 id:"login_container", 
 appid: "", 
 scope: "", 
 redirect_uri: "",
  state: "",
 style: "",
 href: ""
 });

参数说明

参数是否必须说明
self_redirecttrue:手机点击确认登录后可以在 iframe 内跳转到 redirect_uri,false:手机点击确认登录后可以在 top window 跳转到 redirect_uri。默认为 false。
id第三方页面显示二维码的容器id
appid应用唯一标识,在微信开放平台提交应用审核通过后获得
scope应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可
redirect_uri重定向地址,需要进行UrlEncode
state用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止 csrf 攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加 session 进行校验
style提供”black”、”white”可选,默认为黑色文字描述。详见文档底部FAQ
href自定义样式链接,第三方可根据实际需求覆盖默认样式。详见文档底部FAQ

第二步:通过 code 获取access_token

通过 code 获取access_token

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

参数说明

参数是否必须说明
appid应用唯一标识,在微信开放平台提交应用审核通过后获得
secret应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
code填写第一步获取的 code 参数
grant_type填authorization_code

返回说明

正确的返回:

{ 
"access_token":"ACCESS_TOKEN", 
"expires_in":7200, 
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID", 
"scope":"SCOPE",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

参数说明

参数说明
access_token接口调用凭证
expires_inaccess_token接口调用凭证超时时间,单位(秒)
refresh_token用户刷新access_token
openid授权用户唯一标识
scope用户授权的作用域,使用逗号(,)分隔
unionid当且仅当该网站应用已获得该用户的 userinfo 授权时,才会出现该字段。

错误返回样例:

{"errcode":40029,"errmsg":"invalid code"}

刷新access_token有效期

access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新,access_token刷新结果有两种:

1. 若access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间;
2. 若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。

refresh_token拥有较长的有效期(30天),当refresh_token失效的后,需要用户重新授权。

请求方法

获取第一步的 code 后,请求以下链接进行refresh_token:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

参数说明

参数是否必须说明
appid应用唯一标识
grant_type填refresh_token
refresh_token填写通过access_token获取到的refresh_token参数

返回说明

正确的返回:

{ 
"access_token":"ACCESS_TOKEN", 
"expires_in":7200, 
"refresh_token":"REFRESH_TOKEN", 
"openid":"OPENID", 
"scope":"SCOPE" 
}

参数说明

参数说明
access_token接口调用凭证
expires_inaccess_token接口调用凭证超时时间,单位(秒)
refresh_token用户刷新access_token
openid授权用户唯一标识
scope用户授权的作用域,使用逗号(,)分隔

错误返回样例:

{"errcode":40030,"errmsg":"invalid refresh_token"}

注意:

1、Appsecret 是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取Appsecret);
2、access_token 为用户授权第三方应用发起接口调用的凭证(相当于用户登录态),存储在客户端,可能出现恶意获取access_token 后导致的用户数据泄漏、用户微信相关接口功能被恶意发起等行为;
3、refresh_token 为用户授权第三方应用的长效凭证,仅用于刷新access_token,但泄漏后相当于access_token 泄漏,风险同上。

建议将secret、用户数据(如access_token)放在 App 云端服务器,由云端中转接口调用请求。

第三步:通过access_token调用接口

获取access_token后,进行接口调用,有以下前提:

1. access_token有效且未超时;
2. 微信用户已授权给第三方应用帐号相应接口作用域(scope)。

对于接口作用域(scope),能调用的接口有以下:

授权作用域(scope)接口接口说明
snsapi_base/sns/oauth2/access_token通过 code 换取access_token、refresh_token和已授权scope
snsapi_base/sns/oauth2/refresh_token刷新或续期access_token使用
snsapi_base/sns/auth检查access_token有效性
snsapi_userinfo/sns/userinfo获取用户个人信息

其中snsapi_base属于基础接口,若应用已拥有其它 scope 权限,则默认拥有snsapi_base的权限。使用snsapi_base可以让移动端网页授权绕过跳转授权登录页请求用户授权的动作,直接跳转第三方网页带上授权临时票据(code),但会使得用户已授权作用域(scope)仅为snsapi_base,从而导致无法获取到需要用户授权才允许获得的数据和基础功能。 接口调用方法可查阅《微信授权关系接口调用指南》

F.A.Q

  1. 什么是授权临时票据(code)? 答:第三方通过 code 进行获取access_token的时候需要用到,code的超时时间为10分钟,一个 code 只能成功换取一次access_token即失效。code的临时性和一次保障了微信授权登录的安全性。第三方可通过使用 https 和state参数,进一步加强自身授权登录的安全性。
  2. 什么是授权作用域(scope)? 答:授权作用域(scope)代表用户授权给第三方的接口权限,第三方应用需要向微信开放平台申请使用相应 scope 的权限后,使用文档所述方式让用户进行授权,经过用户授权,获取到相应access_token后方可对接口进行调用。
  3. 网站内嵌二维码微信登录 JS 代码中 style 字段作用? 答:第三方页面颜色风格可能为浅色调或者深色调,若第三方页面为浅色背景,style字段应提供”black”值(或者不提供,black为默认值),则对应的微信登录文字样式为黑色。相关效果如下:

若提供”white”值,则对应的文字描述将显示为白色,适合深色背景。相关效果如下:

4.网站内嵌二维码微信登录 JS 代码中 href 字段作用? 答:如果第三方觉得微信团队提供的默认样式与自己的页面样式不匹配,可以自己提供样式文件来覆盖默认样式。举个例子,如第三方觉得默认二维码过大,可以提供相关 css 样式文件,并把链接地址填入 href 字段

.impowerBox .qrcode {width: 200px;}
.impowerBox .title {display: none;}
.impowerBox .info {width: 200px;}
.status_icon {display: none}
.impowerBox .status {text-align: center;} 

相关效果如下:

微信开放平台微信登录功能 /消息推送服务器设置

微信开放平台微信登录功能 /消息推送服务器设置

消息推送

第一步:填写服务器配置

登录OPEN平台后,在移动应用/网页应用详情页面 -「消息推送」中,管理员可启用消息服务,填写服务器地址(URL)、令牌(Token) 和 消息加密密钥(EncodingAESKey)等信息。

  • URL: 开发者用来接收微信消息和事件的接口 URL。开发者所填写的URL 必须以 http:// 或 https:// 开头,分别支持 80 端口和 443 端口。
  • Token: 可由开发者可以任意填写,用作生成签名(该 Token 会和接口 URL 中包含的 Token 进行比对,从而验证安全性)。
  • EncodingAESKey: 由开发者手动填写或随机生成,将用作消息体加解密密钥。

同时,开发者可选择消息加解密方式:明文模式(默认)、兼容模式和安全模式。可以选择消息数据格式:XML 格式(默认)或 JSON 格式。

模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。切换加密方式和数据格式需要提前配置好相关代码,详情请参考 消息加解密说明

第二步:验证消息的确来自微信服务器

开发者提交信息后,微信服务器将发送 GET 请求到填写的服务器地址 URL 上,GET请求携带参数如下表所示:

参数描述
signature微信加密签名,signature结合了开发者填写的 token 参数和请求中的 timestamp 参数、nonce参数。
timestamp时间戳
nonce随机数
echostr随机字符串

开发者通过检验 signature 对请求进行校验(下面有校验方式)。若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

  1. 将token、timestamp、nonce三个参数进行字典序排序
  2. 将三个参数字符串拼接成一个字符串进行sha1加密
  3. 开发者获得加密后的字符串可与 signature 对比,标识该请求来源于微信

验证 URL 有效性成功后即接入生效。

检验 signature 的PHP示例代码:

private function checkSignature()
{
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];

    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );

    if ($tmpStr == $signature ) {
        return true;
    } else {
        return false;
    }
}

PHP示例代码下载:下载

第三步:接收消息和事件

当某些特定的用户操作引发事件推送时(如用户资料变更时),微信服务器会将消息(或事件)的数据包以 POST 请求发送到开发者配置的 URL,开发者可以依据自身业务逻辑进行响应。事件类型消息推荐使用 FromUserName + CreateTime 排重。

服务器收到请求必须做出下述回复,这样微信服务器才不会对此作任何处理,并且不会发起重试。详见下面说明:

  1. 直接回复success(推荐方式)
  2. 直接回复空串(指字节长度为0的空字符串,而不是结构体中 content 字段的内容为空)

微信开放平台 微信登录功能 /移动应用授权用户信息变更

微信开放平台 微信登录功能 /移动应用授权用户信息变更

授权用户信息变更

1、 授权用户资料变更:当部分用户的资料存在风险时,平台会对用户资料进行清理,并通过消息推送服务器通知最近30天授权过的开放平台开发者,我们建议开发者留意响应该事件,及时主动更新或清理用户的头像及昵称,降低风险。
2、 授权用户资料撤回:当用户撤回授权信息时,平台会通过消息推送服务器通知给开放平台开发者,请开发者注意及时删除用户信息。
3、 授权用户完成注销:当授权用户完成注销后,平台会通过消息推送服务器通知给开放平台开发者,请依法依规及时履行相应个人信息保护义务,保护用户权益。
点击查看消息推送服务器配置

事件推送示例:

XML

<xml>
    <ToUserName><![CDATA[gh_870882ca4b1]]></ToUserName>
    <FromUserName><![CDATA[owAqB1v0ahK_Xlc7GshIDdf2yf7E]]></FromUserName>
    <CreateTime>1626857200</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[user_authorization_revoke]]></Event>
    <OpenID><![CDATA[owAqB1nqaOYYWl0Ng484G2z5NIwU]]></OpenID>
    <AppID><![CDATA[wx13974bf780d3dc89]]></AppID>
    <RevokeInfo><![CDATA[1]]></RevokeInfo>
</xml>

JSON

{
"ToUserName": "gh_870882ca4b1",
"FromUserName": "oaKk346BaWE-eIn4oSRWbaM9vR7s",
"CreateTime": 1627359464,
"MsgType": "event",
"Event": "user_authorization_revoke",
" OpenID": "oaKk343WOktAaT2ygsX138BGblrg",
" AppID": "wx13974bf780d3dc89",
" RevokeInfo": "301",
}

事件字段定义

属性类型说明
ToUserNamestring移动应用的UserName
FromUserNamestring平台推送服务UserName
MsgTypestring默认为:Event
Eventstringuser_info_modified:用户资料变更,user_authorization_revoke:用户撤回,user_authorization_cancellation:用户完成注销;
CreateTimenumber发送时间
OpenIDstring授权用户OpenID
AppIDstring移动应用的AppID
RevokeInfostring用户撤回的授权信息,301:用户撤回移动应用所有授权信息

微信登录功能 /授权后接口调用(UnionID)

通过 code 获取 access_token

接口说明

通过 code 获取 access_token 的接口。

请求说明

GET https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

参数说明

参数是否必须说明
appid应用唯一标识,在微信开放平台提交应用审核通过后获得
secret应用密钥 AppSecret,在微信开放平台提交应用审核通过后获得
code填写第一步获取的 code 参数
grant_type填 authorization_code

返回说明

正确的返回:

{
  "access_token": "ACCESS_TOKEN",
  "expires_in": 7200,
  "refresh_token": "REFRESH_TOKEN",
  "openid": "OPENID",
  "scope": "SCOPE"
}
参数说明
access_token接口调用凭证
expires_inaccess_token 接口调用凭证超时时间,单位(秒)
refresh_token用户刷新 access_token
openid授权用户唯一标识
scope用户授权的作用域,使用逗号(,)分隔

错误返回样例:

{
  "errcode": 40029,
  "errmsg": "invalid code"
}

刷新或续期 access_token 使用

接口说明

access_token 是调用授权关系接口的调用凭证,由于 access_token 有效期(目前为 2 个小时)较短,当 access_token 超时后,可以使用 refresh_token 进行刷新,access_token 刷新结果有两种:

1.若 access_token 已超时,那么进行 refresh_token 会获取一个新的 access_token,新的超时时间;

2.若 access_token 未超时,那么进行 refresh_token 不会改变 access_token,但超时时间会刷新,相当于续期 access_token。

refresh_token 拥有较长的有效期(30 天)且无法续期,当 refresh_token 失效的后,需要用户重新授权后才可以继续获取用户头像昵称。

请求方法

使用/sns/oauth2/access_token 接口获取到的 refresh_token 进行以下接口调用:

GET https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

参数说明

参数是否必须说明
appid应用唯一标识
grant_type填 refresh_token
refresh_token填写通过 access_token 获取到的 refresh_token 参数

返回说明

正确的返回:

{
  "access_token": "ACCESS_TOKEN",
  "expires_in": 7200,
  "refresh_token": "REFRESH_TOKEN",
  "openid": "OPENID",
  "scope": "SCOPE"
}
参数说明
access_token接口调用凭证
expires_inaccess_token 接口调用凭证超时时间,单位(秒)
refresh_token用户刷新 access_token
openid授权用户唯一标识
scope用户授权的作用域,使用逗号(,)分隔

错误返回样例:

{
  "errcode": 40030,
  "errmsg": "invalid refresh_token"
}

接口说明

检验授权凭证(access_token)是否有效

请求说明

GET https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID

参数说明

参数是否必须说明
access_token调用接口凭证
openid普通用户标识,对该公众帐号唯一

返回说明

正确的 Json 返回结果:

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

错误的 Json 返回示例:

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

获取用户个人信息(UnionID 机制)

接口说明

此接口用于获取用户个人信息。开发者可通过 OpenID 来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的 unionid 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的 unionid 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid 是相同的。请注意,在用户修改微信头像后,旧的微信头像 URL 将会失效,因此开发者应该自己在获取用户信息后,将头像图片保存下来,避免微信头像 URL 失效后的异常情况。

请求说明

GET https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

参数说明

参数是否必须说明
access_token调用凭证
openid普通用户的标识,对当前开发者帐号唯一
lang国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语,默认为 en

返回说明

正确的 Json 返回结果:

{
  "openid": "OPENID",
  "nickname": "NICKNAME",
  "sex": 1,
  "province": "PROVINCE",
  "city": "CITY",
  "country": "COUNTRY",
  "headimgurl": "https://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
  "privilege": ["PRIVILEGE1", "PRIVILEGE2"],
  "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
参数说明
openid普通用户的标识,对当前开发者帐号唯一
nickname普通用户昵称
sex普通用户性别,1 为男性,2 为女性
province普通用户个人资料填写的省份
city普通用户个人资料填写的城市
country国家,如中国为 CN
headimgurl用户头像,最后一个数值代表正方形头像大小(有 0、46、64、96、132 数值可选,0 代表 640*640 正方形头像),用户没有头像时该项为空
privilege用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
unionid用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的 unionid 是唯一的。

建议:

开发者最好保存 unionID 信息,以便以后在不同应用之间进行用户信息互通。

错误的 Json 返回示例:

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

调用频率限制

接口名频率限制
通过 code 换取 access_token5 万/分钟
获取用户基本信息5 万/分钟
刷新 access_token10 万/分钟

微信开放平台微信登录功能 /移动应用微信登录开发指南

微信开放平台微信登录功能 /移动应用微信登录开发指南

准备工作

移动应用微信登录是基于OAuth2.0 协议标准构建的微信 OAuth2.0 授权登录系统。

在进行微信 OAuth2.0 授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的移动应用,并获得相应的 AppID 和 AppSecret,申请微信登录且通过审核后,可开始接入流程。

1、目前移动应用上微信登录只提供原生的登录方式,需要用户安装微信客户端才能配合使用。

2、对于 Android 应用,建议总是显示微信登录按钮,当用户手机没有安装微信客户端时,请引导用户下载安装微信客户端。

3、对于 iOS 应用,考虑到 iOS 应用商店审核指南中的相关规定,建议开发者接入微信登录时,先检测用户手机是否已安装微信客户端(使用 sdk 中isWXAppInstalled函数 ),对未安装的用户隐藏微信登录按钮,只提供其他登录方式(比如手机号注册登录、游客登录等)。

授权流程说明

微信 OAuth2.0 授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信 OAuth2.0 的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过 access_token 可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。

微信 OAuth2.0 授权登录目前支持 authorization_code 模式,适用于拥有 server 端的应用授权。该模式整体流程为:

1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据 code 参数;

2. 通过 code 参数加上 AppID 和AppSecret等,通过 API 换取access_token;

3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

获取 access_token 时序图:

第一步:请求 CODE

移动应用微信授权登录

开发者需要配合使用微信开放平台提供的 SDK 进行授权登录请求接入。正确接入 SDK 后并拥有相关授权域(scope)权限后,开发者移动应用会在终端本地拉起微信应用进行授权登录,微信用户确认后微信将拉起开发者移动应用,并带上授权临时票据(code)。

iOS 平台应用授权登录接入代码示例(请参考 iOS 接入指南):


-(void)sendAuthRequest
{
	//构造 SendAuthReq 结构体
	SendAuthReq* req =[[[SendAuthReq alloc]init]autorelease];
	req.scope = @"snsapi_userinfo";
	req.state = @"123";
	//第三方向微信终端发送一个 SendAuthReq 消息结构
	[WXApi sendReq:req];
}

Android 平台应用授权登录接入代码示例(请参考 Android 接入指南):

{
	// send oauth request
	Final SendAuth.Req req = new SendAuth.Req();
	req.scope = "snsapi_userinfo";
	req.state = "wechat_sdk_demo_test";
	api.sendReq(req);
}

参数说明

参数是否必须说明
appid应用唯一标识,在微信开放平台提交应用审核通过后获得
scope应用授权作用域,如获取用户个人信息则填写 snsapi_userinfo
state用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止 csrf 攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加 session 进行校验。在 state 传递的过程中会将该参数作为 url 的一部分进行处理,因此建议对该参数进行url encode操作,防止其中含有影响 url 解析的特殊字符(如’#’、’&’等)导致该参数无法正确回传。

返回示例:

appid: wxd477edab60670232
scope: snsapi_userinfo
state: wechat_sdk_demo

可拉起微信打开授权登录页:

返回说明

用户点击授权后,微信客户端会被拉起,跳转至授权界面,用户在该界面点击允许或取消,SDK 通过 SendAuth 的 Resp 返回数据给调用方。

返回值说明
ErrCodeERR_OK = 0(用户同意) ERR_AUTH_DENIED = -4(用户拒绝授权) ERR_USER_CANCEL = -2(用户取消)
code用户换取 access_token 的 code,仅在 ErrCode 为 0 时有效
state第三方程序发送时用来标识其请求的唯一性的标志,由第三方程序调用 sendReq 时传入,由微信终端回传,state 字符串长度不能超过 1K
lang微信客户端当前语言
country微信用户当前国家信息

第二步:通过 code 获取 access_token

获取第一步的 code 后,请求以下链接获取 access_token:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

参数说明

参数是否必须说明
appid应用唯一标识,在微信开放平台提交应用审核通过后获得
secret应用密钥 AppSecret,在微信开放平台提交应用审核通过后获得
code填写第一步获取的 code 参数
grant_type填 authorization_code

返回说明

正确的返回:

{
  "access_token": "ACCESS_TOKEN",
  "expires_in": 7200,
  "refresh_token": "REFRESH_TOKEN",
  "openid": "OPENID",
  "scope": "SCOPE",
  "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
参数说明
access_token接口调用凭证
expires_inaccess_token 接口调用凭证超时时间,单位(秒)
refresh_token用户刷新 access_token
openid授权用户唯一标识
scope用户授权的作用域,使用逗号(,)分隔
unionid当且仅当该移动应用已获得该用户的 userinfo 授权时,才会出现该字段

错误返回样例:

{"errcode":40029,"errmsg":"invalid code"}

刷新 access_token 有效期

access_token 是调用授权关系接口的调用凭证,由于 access_token 有效期(目前为 2 个小时)较短,当 access_token 超时后,可以使用 refresh_token 进行刷新,access_token 刷新结果有两种:

1. 若access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间;
2. 若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。

refresh_token 拥有较长的有效期(30 天),当 refresh_token 失效的后,需要用户重新授权。

请求方法

获取第一步的 code 后,请求以下链接进行 refresh_token:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

参数说明

参数是否必须说明
appid应用唯一标识
grant_type填 refresh_token
refresh_token填写通过 access_token 获取到的 refresh_token 参数

返回说明

正确的返回:

{
  "access_token": "ACCESS_TOKEN",
  "expires_in": 7200,
  "refresh_token": "REFRESH_TOKEN",
  "openid": "OPENID",
  "scope": "SCOPE"
}
参数说明
access_token接口调用凭证
expires_inaccess_token 接口调用凭证超时时间,单位(秒)
refresh_token用户刷新 access_token
openid授权用户唯一标识
scope用户授权的作用域,使用逗号(,)分隔

错误返回样例:

{ "errcode": 40030, "errmsg": "invalid refresh_token" }

注意:

  1. Appsecret 是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取Appsecret);
  2. access_token 为用户授权第三方应用发起接口调用的凭证(相当于用户登录态),存储在客户端,可能出现恶意获取access_token 后导致的用户数据泄漏、用户微信相关接口功能被恶意发起等行为;
  3. refresh_token 为用户授权第三方应用的长效凭证,仅用于刷新access_token,但泄漏后相当于access_token 泄漏,风险同上。

建议将Appsecret、用户数据(如access_token)放在 App 云端服务器,由云端中转接口调用请求。

第三步:通过access_token调用接口

获取access_token后,进行接口调用,有以下前提:

  1. access_token有效且未超时;
  2. 微信用户已授权给第三方应用帐号相应接口作用域(scope)。

对于接口作用域(scope),能调用的接口有以下:

授权作用域(scope)接口接口说明
snsapi_base/sns/oauth2/access_token通过 code 换取access_token、refresh_token和已授权scope
/sns/oauth2/refresh_token刷新或续期access_token使用
/sns/auth检查access_token有效性
snsapi_userinfo/sns/userinfo获取用户个人信息

其中snsapi_base属于基础接口,若应用已拥有其它 scope 权限,则默认拥有snsapi_base的权限。使用snsapi_base可以让移动端网页授权绕过跳转授权登录页请求用户授权的动作,直接跳转第三方网页带上授权临时票据(code),但会使得用户已授权作用域(scope)仅为snsapi_base,从而导致无法获取到需要用户授权才允许获得的数据和基础功能。

接口调用方法可查阅微信授权关系接口调用指南

F.A.Q

1. 什么是授权临时票据(code)?

答:第三方通过 code 进行获取access_token的时候需要用到,code的超时时间为10分钟,一个 code 只能成功换取一次access_token即失效。code的临时性和一次保障了微信授权登录的安全性。第三方可通过使用 https 和state参数,进一步加强自身授权登录的安全性。

2. 什么是授权作用域(scope)?

答:授权作用域(scope)代表用户授权给第三方的接口权限,第三方应用需要向微信开放平台申请使用相应 scope 的权限后,使用文档所述方式让用户进行授权,经过用户授权,获取到相应access_token后方可对接口进行调用。

3.开放平台移动应用微信登录目前是否收费?

答:“微信登录”和第三方网站共享微信庞大的用户价值,同时为微信用户提供更便捷服务和更优质内容,实现双向共赢,目前不收取任何费用。

建立一个社区性质的APP怎么低成本快速开发?

建立一个社区性质的APP怎么低成本快速开发?

近几年国内的移动应用制作市场正在发生着巨大的变化,从社交移动应用、商城移动应用、教net网页打包成app育移动应用的制作,渐渐的转向了城市本地生活服务移动应用的制作。

生活是每个人都想要的,用户对于本地生活服务手机应用软件的依赖也越来越高,这么在移动互联网时代,城市本地生活服务移动应用市场前景怎么?

随着手机智能化的发展不止仅带动了手机移动应用制作市场,也带动了生活的智能化进程。

网页转应用工具

在这智慧生活里面,肯定少不了本地生活服务移动应用的功劳,相信只有两者相辅相成才可以实现真正的智慧生活,才能真正的服务于人们生活。

除了智慧生活,另外大家比较熟悉的o二o模式的本地生活服务类,本地生活服务最早出现于二00三年,那时是以本地生活服务网webapp开发站的形式出现。

随着智能手机的发展,在二01三年,全面进入手机应用移动应用软件时代。

在近几年的发展,生活服务移动软件的类型也是越来越多,市场的份额也是越来越大。

而我国有1三亿的人口,这个人口红利对于制作生活服务移动应用软件来看是极为的有助,从美团、大众点评移动应用软件,到滴滴打车等生活服务应用软件,这些生活服务移动应用手机应用软件的出现,无疑不是在为生活服务市场的壮大提供有助的条件。

正是本地生活服务市场具有无限大的发展前景,在七月1二号,高德地图发布了“极客地图” 为用户提供生活服务信息,也开启了抢占移动生活服务市场的号角。

移动互联网市场的跟新升级,各种类型的应用软件交替出现,唯有本地生活服务移动应用的留存时间是最久的,虽然生活服务应用软件不是最通用的移动应用软件,但就是它的实用便捷性让现代的人越来越离不开它。

这也就是为什麽目前越来越多的互联网大头都来抢占这以市场的

原因。

生活服务移动应用软件能有很好的发展趋势吗?答案是肯定的,生活服务移动应用一定能有很好的市场发展前景,是因为手机是大家离不开的,生活与每个人息息相关,本地生活服务手机移动应用制作,必定会有无限大的市场前景。

特别是目前家居、生活智能化进程迅速发展,生活服务移动移动应用的发展前景必定广阔。

建立一个社区性质的APP怎么低成本快速开发?

APP开发微信登录功能 wxLogin 微信登录 通过网页回调

用做网页的技术做APP
一门提供标准化的jsbridge-mini.js库,您只需要在页面引用执行JS即可实现各种原生APP、原生PC的功能能力。

==================APP端==================
【APP端】(安卓版&苹果版)目前提供200+原生功能,2000+JS映射接口,用做网站的技术即可实现各种原生APP能力、APP demo地址https://www.yimenapp.com/doc/demo.cshtml下载教程:
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
一门APP开发平台通用JS

wxLogin 微信登录 通过网页回调

jsBridge.wxLogin("./u.cshtml");
/*
1. 登录成功后将授权码 code 等参数附加到 url 上跳转链接
2. url 参数请参见 微信登录 通过函数回调
u.cshtml?code=xxx&openid=xxx
*/

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.wxLogin("./u.cshtml");
/*
1. 登录成功后将授权码 code 等参数附加到 url 上跳转链接
2. url 参数请参见 微信登录 通过函数回调
u.cshtml?code=xxx&openid=xxx
*/

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.wxLogin("./u.cshtml");
/*
1. 登录成功后将授权码 code 等参数附加到 url 上跳转链接
2. url 参数请参见 微信登录 通过函数回调
u.cshtml?code=xxx&openid=xxx
*/

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

APP开发微信登录功能 wxLogin 微信登录 通过函数回调

用做网页的技术做APP
一门提供标准化的jsbridge-mini.js库,您只需要在页面引用执行JS即可实现各种原生APP、原生PC的功能能力。

==================APP端==================
【APP端】(安卓版&苹果版)目前提供200+原生功能,2000+JS映射接口,用做网站的技术即可实现各种原生APP能力、APP demo地址https://www.yimenapp.com/doc/demo.cshtml下载教程:
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
一门APP开发平台通用JS

wxLogin 微信登录 通过函数回调

通过js函数回调获取登录结果及授权参数

jsBridge.wxLogin(function(succ, ret) {
  if (succ) {    
    alert(JSON.stringify(ret));
  } else {
    alert("登录失败或取消了登录");
  }
});
/*
1. 登录成功的结果在 ret 中返回,是个 json 对象:
2. 如果你在打包平台填写了 微信AppSecret,APP会用授权码 code 去获取 openid, access_token 等信息,由于授权码 code 只能使用一次,所以你再用 code 去腾讯接口获取信息会失败;
3. 如果没有填写 微信AppSecret, ret 中只返回 code,你需要在服务器端用 code + 微信AppSecret 去腾讯接口获取信息;
{
  code:         //授权码,只能使用一次
  openid:       //如果在打包平台填写了 微信AppSecret 将返回此字段
  access_token: //如果在打包平台填写了 微信AppSecret 将返回此字段
  userinfo: {   //用户信息,如果在打包平台填写了 微信AppSecret 将返回此字段
    nickname: "xxx"
    //...
  }
}
*/

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.wxLogin(function(succ, ret) {
  if (succ) {    
    alert(JSON.stringify(ret));
  } else {
    alert("登录失败或取消了登录");
  }
});
/*
1. 登录成功的结果在 ret 中返回,是个 json 对象:
2. 如果你在打包平台填写了 微信AppSecret,APP会用授权码 code 去获取 openid, access_token 等信息,由于授权码 code 只能使用一次,所以你再用 code 去腾讯接口获取信息会失败;
3. 如果没有填写 微信AppSecret, ret 中只返回 code,你需要在服务器端用 code + 微信AppSecret 去腾讯接口获取信息;
{
  code:         //授权码,只能使用一次
  openid:       //如果在打包平台填写了 微信AppSecret 将返回此字段
  access_token: //如果在打包平台填写了 微信AppSecret 将返回此字段
  userinfo: {   //用户信息,如果在打包平台填写了 微信AppSecret 将返回此字段
    nickname: "xxx"
    //...
  }
}
*/

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.wxLogin(function(succ, ret) {
  if (succ) {    
    alert(JSON.stringify(ret));
  } else {
    alert("登录失败或取消了登录");
  }
});
/*
1. 登录成功的结果在 ret 中返回,是个 json 对象:
2. 如果你在打包平台填写了 微信AppSecret,APP会用授权码 code 去获取 openid, access_token 等信息,由于授权码 code 只能使用一次,所以你再用 code 去腾讯接口获取信息会失败;
3. 如果没有填写 微信AppSecret, ret 中只返回 code,你需要在服务器端用 code + 微信AppSecret 去腾讯接口获取信息;
{
  code:         //授权码,只能使用一次
  openid:       //如果在打包平台填写了 微信AppSecret 将返回此字段
  access_token: //如果在打包平台填写了 微信AppSecret 将返回此字段
  userinfo: {   //用户信息,如果在打包平台填写了 微信AppSecret 将返回此字段
    nickname: "xxx"
    //...
  }
}
*/

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

APP开发微信登录功能 检查设备是否已安装微信客户端

用做网页的技术做APP
一门提供标准化的jsbridge-mini.js库,您只需要在页面引用执行JS即可实现各种原生APP、原生PC的功能能力。

==================APP端==================
【APP端】(安卓版&苹果版)目前提供200+原生功能,2000+JS映射接口,用做网站的技术即可实现各种原生APP能力、APP demo地址https://www.yimenapp.com/doc/demo.cshtml下载教程:
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
一门APP开发平台通用JS

检查设备是否已安装微信客户端

jsBridge.wxAppInstalled(function(yes){
  alert(yes ? "已安装" : "未安装");
});

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.wxAppInstalled(function(yes){
  alert(yes ? "已安装" : "未安装");
});

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.wxAppInstalled(function(yes){
  alert(yes ? "已安装" : "未安装");
});

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

申请微信移动应用是否需要提供官方网站,网站有什么要求

很多客户在打包APP的过程中,需要用到微信分享微、信登录以及微信支付功能;如果你需要用到这些功能,那么你就需要去微信开放平台申请微信移动应用;

微信开放平台

当你在创建微信移动应用的时候,是需要你提供可以正常访问的官网的;

图:提供应用官网申请移动应用

那么微信开放平台对应用户提供的官网有什么要求呢?

首先第一点是你的官网的网址是需要备案在你认证的开发者纸质主体下面的网址,域名备案的主办单位需要是和你认证的开发者是同一个主体;

其次你的官网上面需要有你们公司的介绍,联系方式,地址,主要业务介绍,特别是对你申请移动应用的APP的介绍;

如果你在申请微信移动应用的过程中,有什么不懂的或者觉得申请起来很麻烦,可以联系我们在线客服,我们也提供代申请服务;

图:审核通过的移动应用

云商城全网通设置-APP登录设置

云商城全网通设置中可以对商城的基本设置、样式设置、验证短信模板、APP登录设置和APP样式设置进行设置;

图:一门APP打包平台开发者中心

我们针对全网通设置的验证码短信模板进行介绍,在验证码短信模板中可以设置是否开启QQ登录、微信登录、注册登录是否强制勾选用户协议与隐私政策、填写APP的用户协议和隐私政策;

图:APP登录设置

设置APP第三方登录,在此可以设置是否开启QQ授权登录和微信授权登录商城;

图:勾选QQ登录和微信登录

设置注册登录是否强制勾选同意商城用户协议与隐私政策,开启后登录时需要勾选同意用户协议与隐私政策后才能登录商城;

图:开启注册登录强制勾选

设置用户协议与隐私政策,在此设置了用户协议与隐私政策,用户在勾选用户协议与隐私政策时可以点击查看商城的用户协议和隐私政策内容;

图:输入用户协议和隐私政策内容

如果你在配置APP登录设置的过程中还有其他疑问 ,可以联系我们在线客服进行咨询。

云商城配置微信分享登录支付

用户使用一门APP打包平台上面的云商城创建的商城应用也是可以配置微信分享登录和支付功能的,首先登录一门APP开发者中心进入云商城管理后台,点击基本信息进入配置页面;

图:云商城管理后台

进入云商城配置移动版页面之后,在右侧的功能列表中找到微信(分享/登录/支付)功能;

图:找到微信(分享/登录/支付)功能

找到微信(分享/登录/支付)功能之后,鼠标左键点击该功能弹出配置页去配置此功能;

图:配置微信(分享/登录/支付)功能

如果是只配置了微信分享功能的话,保存配置然后去重新生成新版的安装包即可在APP内查看配置后微信分享的效果;

如果是配置了微信登录功能,还需要去管理商城-设置-全网通设置-APP登录设置中勾选开启微信登录;

图:去全网通开启APP登录中的微信登录

然后再去生成新版的安装包下载安装新版的APP即可实现微信授权登录APP了;

如果还配置了微信支付功能,那么还需要去商城管理后台的设置-交易-支付设置-APP端开启微信支付并配置相关参数;

图:去商城后台支付设置中配置微信支付

配置好之后就可以去生成新版的安装包下载安装新版测试微信支付功能了。

申请微信开放平台移动应用账号注册

首先需要去open.weixin.qq.com注册一个账号,账号请填写未在微信开放平台和公众平台注册、未被微信私人帐号绑定的邮箱;

图:微信开放平台

账号都是电子邮箱;

图:注册账号

注册账号后选择注册地,一般都是中国大陆;

图:选择注册地

然后去选择主体类型,更具个人实际情况选择即可;

图:选择主体类型

主体信息填写完成后,都需要你填写的管理员实名认证的微信扫码;提交后就可以去认证开发者资质了,如果你不认证开发者资质在申请移动应用的时候是不能获取支付和登录权限的;

图:未认证开发者无法申请开通微信支付
图:未认证开发者无法申请开通微信登录

网站APP打包配置微信登录

图:微信开放平台

网站APP打包也是可以配置微信登录功能的,选用一门APP打包平台打包你的移动应用,点击登录一门APP打包平台的开发者中心即可进行配置;

图:登录一门APP开发者中心

登录一门APP开发者中心之后,在我的应用里面找到你需要配置微信登录功能的移动应用,点击配置按钮进入配置移动版页面;

图:找到需要配置微信登录功能的应用

进入配置移动版页面之后,在页面右侧找到微信登录功能;

图:找到微信登录功能

找到微信登录功能之后,鼠标左键点击微信登录功能即可弹出功能配置页面就会提示需要你去微信分享功能中去配置 AppID 和 AppSecret,在微信分享配置页面去输入你在微信开放平台审核通过的移动应用的APPID和APPsecret并点击保存按钮;

图:配置微信分享

微信登录功能属于离线配置功能,配置之后需要通过生成新版的安装包下载安装新版才能生效;由于微信登录功能属于原生开发功能,引用我们的js来调用微信登录接口,这是demo示例;如果你们没有技术,可以联系我们在线客服付费给我们帮你完成微信登录在你APP内指定位置的调用。

图:APP端调用微信登录功能

APP打包能实现微信登录APP吗?

APP打包是可以实现微信登录APP的。(如下图)

想要在APP打包中实现微信登录,需要具备哪些条件呢?
首先你需要有在微信开放平台上面审核通用的微信移动应用,(如下图)

其次,你在微信开放平台注册的账号需要通过微信开放平台的开发者资质认证,才能获取到微信登录的权限,(如下图)


然后,你需要在我们APP打包平台上面的微信分享功能里面配置你审核通过的微信移动应用的APPID以及APPsecret,(如下图)

如果在APP打包的过程中或者是申请微信移动应用的过程中有不懂的可以参考我们的教程,(如下图)

如果在APP打包过程中,还有其他不懂的问题,可以咨询我们平台在线客服。

微信开放平台是什么?

微信现在已经是国民级应用了,几乎每一个人都会有微信,那么APP开发者在开发移动应用的时候,基于需求方的要求,比如实现和微信的互通,那么都会用到微信开放平台。

微信开放平台提供从网站、APP、公共号、小程序等开发能力的合作接入,通过微信开放平台,您的项目可以获得和微信APP互通数据和交互的能力。

比如:

微信分享,可以实现您的APP唤起微信APP分享给好友,或者分享到微信朋友圈

微信登录,实现APP唤起微信APP,使用微信授权账户登录您的APP,无需用户手动创建APP账户,完成快捷注册和登录

微信支付,实现APP唤起微信APP,使用微信支付能力,支付成功之后直接回到您的APP

(图:微信开放平台分享能力)

微信开放平台核心交互能力表现为:

移动应用开发接入微信开放平台,让你的移动应用支持微信分享、微信收藏和微信支付。
网站应用开发接入微信开放平台,让你的网站支持使用微信帐号来登录
公众帐号开发接入微信开放平台公众帐号开发,为亿万微信用户提供轻便的服务。
第三方平台开发成为第三方平台,为广大公众号和小程序提供运营服务和行业解决方案

简单的来说,微信开放平台是腾讯为旗下微信生态打造的三方合作平台,如果您是开发者,想借助微信生态实现价值,那么肯定是需要加入微信开放平台的,微信开放平台目前提供免费的接口和付费的接口两种模式。

一些基础的接口能力,比如分享是可以直接免费使用的;登录和支付等高级能力则需要通过认证,付费300元年费,才可以获得权限。

(图:微信开放平台)

微信开放平台的地址为:https://open.weixin.qq.com/

如果您是公共号开发者,或者有计划成为APP开发者,那都建议您先到微信开放平台注册账号哦!这两个的开发者早晚都会用到微信开放平台的呢。

discuz开发app配置登录,支持QQ登录微信登录微博登录短信登录苹果登录

discuzapp登录配置基本设置

一门app插件-登录配置-基本设置

可以在这里设置:
登录绑定
同步头像
用户协议
隐私协议
积分赠送

1.登录绑定-用户使用三方授权注册登录后是否绑定论坛用户信息
如果不开启,将会自动创建用户名,一般会只是使用第三方授权信息的用户名,比如微信名!

开启后效果!

绑定老用户-如果这次的授权登录方式没有绑定过用户名,会提示绑定,用户可以输入老用户账户和密码,进行三方登录方式的绑定!

绑定新用户-可以输入新用户名和密码,用户名会默认拉取三方授权登录的用户名,用户也可以自行修改输入!

2.同步头像-将三方授权登录的社交账户的头像直接同步过来,直接拉取三方授权账户的头像图标为论坛会员头像!
可以根据自己的实际业务需求设置是否需要同步头像
一般建议开启!

3.用户协议-您的论坛的用户协议!

可以写一篇“用户协议”的帖子,在此粘贴帖子网址

4.隐私政策-您的论坛的隐私政策地址链接

可以写一篇“隐私政策”的帖子,在此粘贴帖子网址

5.积分赠送 – 用户三方授权注册登录后赠送的积分

温馨提示:这里赠送的积分类型同支付充值的积分类型一致
如需更换积分类型,请移步支付设置