request 发起苹果 ID 授权登录 APP开发接入苹果账号登录apple ID登录教程
用做网页的技术做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 |
request 发起苹果 ID 授权登录 APP开发接入苹果账号登录apple ID登录教程
核心代码示例,详情参阅demo
//发起授权登录,回调返回 data 是 JSON 数据
//请提交到您的服务器 验证 授权信息
jsBridge.sia.request(function(succ, data) {
if (succ) {
var str = JSON.stringify(data);
alert("授权成功:\n" + str);
jsBridge.setClipboardText(str);
alert("已复制到剪贴板");
} else {
alert("取消了授权登录或不支持");
}
});
//授权成功时回调函数返回的 data 示例数据
var exampleData = {
//jwt Token 请在服务器端验证此 Token 是否有效
//验证通过后使用此 Token 的 claims.sub 作为用户唯一标识
"identityToken": "eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLnVwaW4xNTguYXBwLng4IiwiZXhwIjoxNjI4MzI1Mzc4LCJpYXQiOjE2MjgyMzg5NzgsInN1YiI6IjAwMTIwNi43MjA3NDI2YWM5MjA0MzcyOGEzYTZiZDA3NzkwYTdlNy4wNzQ1IiwiY19oYXNoIjoiemxMMXhHNWJsS0dQMEszRVRVZFVudyIsImVtYWlsIjoiZDIyMjhtNGo5bkBwcml2YXRlcmVsYXkuYXBwbGVpZC5jb20iLCJlbWFpbF92ZXJpZmllZCI6InRydWUiLCJpc19wcml2YXRlX2VtYWlsIjoidHJ1ZSIsImF1dGhfdGltZSI6MTYyODIzODk3OCwibm9uY2Vfc3VwcG9ydGVkIjp0cnVlfQ.iXbtj7rG4dBuyPNETEkc25MkWIF1P6Usfnyu2BByQQFv9dQ0vKvz_GbOLm2pjr19Sszp_Y6osiGNg3O5e1hKK3RJyVY4aeoMgdd4v6nDkuu0Qdetc0BPVYk_K2VSxpi80Gd40h6DScGSbQI9g8iJJ7b_YCCUpjxuS54HR5QUyCduV8Fwz_NijiYn8J5P0cARdNBaCvqOENuw8gVN2icWb3h6IUP9HDa89YndcWu93xHXeCDKSzu043PjhpkUh4E_F5EltElFoGZiRKXCBwPS5YW4zD_aD7by_n5U-Y2TleeDKzTyPu6NBkvfxN9vYaZEvM0QmXKMBH9J3-MZpo9lOg",
"realUserStatus": "Unknown",
//授权码
"authorizationCode": "c558352f4c2b64a45afea4b612c6d9827.0.srsqw.ZG8w9UusG2jZ8Q4_x-2tVg",
//用户姓名数据(注意只有第一次登录时才有,以后都会返回空数据)
"fullName": {
//家族姓氏
"familyName": "张",
//前缀
"namePrefix": "",
//名字
"givenName": "三",
//后缀
"nameSuffix": "",
//中名
"middleName": "",
//昵称
"nickname": "永远的神"
},
//电子邮箱
"email": "aaa@bbb.com",
//状态
"state": "",
//用户唯一标识(与解码 jwt 格式 identityToken 出来的 claims.sub 字段相同)
"user": "001206.7207426ac92043728a3a6bd07790a7e7.0745"
};
/*
解码 jwt 格式 identityToken 的示例
可使用此地址在线解码 http://jwt.calebb.net/
=== header
{
kid: "eXaunmL",
//签名算法
alg: "RS256"
}.
=== claims
{
iss: "https://appleid.apple.com",
aud: "com.upin158.app.x8",
exp: 1628325378,
iat: 1628238978,
//用户唯一标识
sub: "001206.7207426ac92043728a3a6bd07790a7e7.0745",
c_hash: "zlL1xG5blKGP0K3ETUdUnw",
email: "d2228m4j9n@privaterelay.appleid.com",
email_verified: "true",
is_private_email: "true",
auth_time: 1628238978,
nonce_supported: true
}.
=== 签名数据
[signature]
*/
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核心代码到此{}括号内-->
//发起授权登录,回调返回 data 是 JSON 数据
//请提交到您的服务器 验证 授权信息
jsBridge.sia.request(function(succ, data) {
if (succ) {
var str = JSON.stringify(data);
alert("授权成功:\n" + str);
jsBridge.setClipboardText(str);
alert("已复制到剪贴板");
} else {
alert("取消了授权登录或不支持");
}
});
//授权成功时回调函数返回的 data 示例数据
var exampleData = {
//jwt Token 请在服务器端验证此 Token 是否有效
//验证通过后使用此 Token 的 claims.sub 作为用户唯一标识
"identityToken": "eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLnVwaW4xNTguYXBwLng4IiwiZXhwIjoxNjI4MzI1Mzc4LCJpYXQiOjE2MjgyMzg5NzgsInN1YiI6IjAwMTIwNi43MjA3NDI2YWM5MjA0MzcyOGEzYTZiZDA3NzkwYTdlNy4wNzQ1IiwiY19oYXNoIjoiemxMMXhHNWJsS0dQMEszRVRVZFVudyIsImVtYWlsIjoiZDIyMjhtNGo5bkBwcml2YXRlcmVsYXkuYXBwbGVpZC5jb20iLCJlbWFpbF92ZXJpZmllZCI6InRydWUiLCJpc19wcml2YXRlX2VtYWlsIjoidHJ1ZSIsImF1dGhfdGltZSI6MTYyODIzODk3OCwibm9uY2Vfc3VwcG9ydGVkIjp0cnVlfQ.iXbtj7rG4dBuyPNETEkc25MkWIF1P6Usfnyu2BByQQFv9dQ0vKvz_GbOLm2pjr19Sszp_Y6osiGNg3O5e1hKK3RJyVY4aeoMgdd4v6nDkuu0Qdetc0BPVYk_K2VSxpi80Gd40h6DScGSbQI9g8iJJ7b_YCCUpjxuS54HR5QUyCduV8Fwz_NijiYn8J5P0cARdNBaCvqOENuw8gVN2icWb3h6IUP9HDa89YndcWu93xHXeCDKSzu043PjhpkUh4E_F5EltElFoGZiRKXCBwPS5YW4zD_aD7by_n5U-Y2TleeDKzTyPu6NBkvfxN9vYaZEvM0QmXKMBH9J3-MZpo9lOg",
"realUserStatus": "Unknown",
//授权码
"authorizationCode": "c558352f4c2b64a45afea4b612c6d9827.0.srsqw.ZG8w9UusG2jZ8Q4_x-2tVg",
//用户姓名数据(注意只有第一次登录时才有,以后都会返回空数据)
"fullName": {
//家族姓氏
"familyName": "张",
//前缀
"namePrefix": "",
//名字
"givenName": "三",
//后缀
"nameSuffix": "",
//中名
"middleName": "",
//昵称
"nickname": "永远的神"
},
//电子邮箱
"email": "aaa@bbb.com",
//状态
"state": "",
//用户唯一标识(与解码 jwt 格式 identityToken 出来的 claims.sub 字段相同)
"user": "001206.7207426ac92043728a3a6bd07790a7e7.0745"
};
/*
解码 jwt 格式 identityToken 的示例
可使用此地址在线解码 http://jwt.calebb.net/
=== header
{
kid: "eXaunmL",
//签名算法
alg: "RS256"
}.
=== claims
{
iss: "https://appleid.apple.com",
aud: "com.upin158.app.x8",
exp: 1628325378,
iat: 1628238978,
//用户唯一标识
sub: "001206.7207426ac92043728a3a6bd07790a7e7.0745",
c_hash: "zlL1xG5blKGP0K3ETUdUnw",
email: "d2228m4j9n@privaterelay.appleid.com",
email_verified: "true",
is_private_email: "true",
auth_time: 1628238978,
nonce_supported: true
}.
=== 签名数据
[signature]
*/
}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->
按钮执行JS示例代码
<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {
<!--这里可以直接复制JS核心代码到此{}括号内-->
//发起授权登录,回调返回 data 是 JSON 数据
//请提交到您的服务器 验证 授权信息
jsBridge.sia.request(function(succ, data) {
if (succ) {
var str = JSON.stringify(data);
alert("授权成功:\n" + str);
jsBridge.setClipboardText(str);
alert("已复制到剪贴板");
} else {
alert("取消了授权登录或不支持");
}
});
//授权成功时回调函数返回的 data 示例数据
var exampleData = {
//jwt Token 请在服务器端验证此 Token 是否有效
//验证通过后使用此 Token 的 claims.sub 作为用户唯一标识
"identityToken": "eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLnVwaW4xNTguYXBwLng4IiwiZXhwIjoxNjI4MzI1Mzc4LCJpYXQiOjE2MjgyMzg5NzgsInN1YiI6IjAwMTIwNi43MjA3NDI2YWM5MjA0MzcyOGEzYTZiZDA3NzkwYTdlNy4wNzQ1IiwiY19oYXNoIjoiemxMMXhHNWJsS0dQMEszRVRVZFVudyIsImVtYWlsIjoiZDIyMjhtNGo5bkBwcml2YXRlcmVsYXkuYXBwbGVpZC5jb20iLCJlbWFpbF92ZXJpZmllZCI6InRydWUiLCJpc19wcml2YXRlX2VtYWlsIjoidHJ1ZSIsImF1dGhfdGltZSI6MTYyODIzODk3OCwibm9uY2Vfc3VwcG9ydGVkIjp0cnVlfQ.iXbtj7rG4dBuyPNETEkc25MkWIF1P6Usfnyu2BByQQFv9dQ0vKvz_GbOLm2pjr19Sszp_Y6osiGNg3O5e1hKK3RJyVY4aeoMgdd4v6nDkuu0Qdetc0BPVYk_K2VSxpi80Gd40h6DScGSbQI9g8iJJ7b_YCCUpjxuS54HR5QUyCduV8Fwz_NijiYn8J5P0cARdNBaCvqOENuw8gVN2icWb3h6IUP9HDa89YndcWu93xHXeCDKSzu043PjhpkUh4E_F5EltElFoGZiRKXCBwPS5YW4zD_aD7by_n5U-Y2TleeDKzTyPu6NBkvfxN9vYaZEvM0QmXKMBH9J3-MZpo9lOg",
"realUserStatus": "Unknown",
//授权码
"authorizationCode": "c558352f4c2b64a45afea4b612c6d9827.0.srsqw.ZG8w9UusG2jZ8Q4_x-2tVg",
//用户姓名数据(注意只有第一次登录时才有,以后都会返回空数据)
"fullName": {
//家族姓氏
"familyName": "张",
//前缀
"namePrefix": "",
//名字
"givenName": "三",
//后缀
"nameSuffix": "",
//中名
"middleName": "",
//昵称
"nickname": "永远的神"
},
//电子邮箱
"email": "aaa@bbb.com",
//状态
"state": "",
//用户唯一标识(与解码 jwt 格式 identityToken 出来的 claims.sub 字段相同)
"user": "001206.7207426ac92043728a3a6bd07790a7e7.0745"
};
/*
解码 jwt 格式 identityToken 的示例
可使用此地址在线解码 http://jwt.calebb.net/
=== header
{
kid: "eXaunmL",
//签名算法
alg: "RS256"
}.
=== claims
{
iss: "https://appleid.apple.com",
aud: "com.upin158.app.x8",
exp: 1628325378,
iat: 1628238978,
//用户唯一标识
sub: "001206.7207426ac92043728a3a6bd07790a7e7.0745",
c_hash: "zlL1xG5blKGP0K3ETUdUnw",
email: "d2228m4j9n@privaterelay.appleid.com",
email_verified: "true",
is_private_email: "true",
auth_time: 1628238978,
nonce_supported: true
}.
=== 签名数据
[signature]
*/
}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->
编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/14640/
部分内容来自网络投稿,如有侵权联系立删