PHP服务端如何进行苹果登录的验证

一、材料准备

1、P8文件:苹果后台生成证书那里的key那里生成,这个文件只可以下载一次,保存好

2、生成JWT token 的脚本

二、脚本siwa.rb

ruby 复制代码
#!/usr/bin/env ruby

require 'jwt'
require 'openssl'
require 'optparse'

options = {}

OptionParser.new do |opts|
  opts.banner = "Usage: siwa.rb [options]"

  opts.on("-k", "--key PATH", "Path to the AuthKey file") do |v|
    options[:key] = v
  end
  opts.on("-t", "--team-id TEAM_ID", "Your Apple Team ID") do |v|
    options[:team_id] = v
  end
  opts.on("-b", "--bundle-id BUNDLE_ID", "Your App's Bundle ID") do |v|
    options[:bundle_id] = v
  end
  opts.on("-h", "--help", "Prints this help") do
    puts opts
    exit
  end
end.parse!

if options[:key].nil? || options[:team_id].nil? || options[:bundle_id].nil?
  puts OptionParser.new.help
  exit
end

pem_content = File.read options[:key]

ecdsa_key = OpenSSL::PKey::EC.new pem_content

headers = {
    'kid' => options[:team_id],
}

claims = {
    'iss' => options[:team_id],
    'iat' => Time.now.to_i,
    'exp' => Time.now.to_i + 86400*180,
    'aud' => 'https://appleid.apple.com',
    'sub' => options[:bundle_id],
}

token = JWT.encode claims, ecdsa_key, 'ES256', headers

puts token

三、运行生成token

1、把脚本放在桌面,命令行执行:chmod +x /Users/say/Desktop/siwa.rb

2、cd到桌面,运行:./siwa.rb -h

如果报错:

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- jwt ( LoadError )

from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'

from ./siwa.rb:3:in `<main>'

说明电脑上没有JWT

3、安装JWT:sudo gem install jwt

4、执行:./siwa.rb -h

终端会输出:

Usage: siwa.rb [options]

-k, --key PATH Path to the AuthKey file

-t, --team-id TEAM_ID Your Apple Team ID

-b, --bundle-id BUNDLE_ID Your App's Bundle ID

-h, --help Prints this help

5、运行:./siwa.rb -k /Users/5T3.p8 -t 684MCOO9T3 -b com.kcys.sx

就会生成JWT 字符串

相关推荐
nbsaas-boot4 小时前
Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
开发语言·python·mysql
chao_7894 小时前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
风无雨5 小时前
GO 启动 简单服务
开发语言·后端·golang
Hellyc5 小时前
用户查询优惠券之缓存击穿
java·redis·缓存
斯普信专业组5 小时前
Go语言包管理完全指南:从基础到最佳实践
开发语言·后端·golang
我是苏苏7 小时前
C#基础:Winform桌面开发中窗体之间的数据传递
开发语言·c#
斐波娜娜7 小时前
Maven详解
java·开发语言·maven
鼠鼠我捏,要死了捏7 小时前
缓存穿透与击穿多方案对比与实践指南
redis·缓存·实践指南
小码氓7 小时前
Java填充Word模板
java·开发语言·spring·word
暮鹤筠8 小时前
[C语言初阶]操作符
c语言·开发语言