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 字符串

相关推荐
夏天的味道٥12 小时前
@JsonIgnore对Date类型不生效
开发语言·python
小白学大数据13 小时前
Python爬虫伪装策略:如何模拟浏览器正常访问JSP站点
java·开发语言·爬虫·python
SEO_juper13 小时前
别再纠结LLMs.txt了!它背后的真相与最佳使用场景,一文讲透。
开发语言·ai·php·数字营销
g***B73813 小时前
JavaScript在Node.js中的模块系统
开发语言·javascript·node.js
烤麻辣烫14 小时前
黑马程序员大事件后端概览(表现效果升级版)
java·开发语言·学习·spring·intellij-idea
思密吗喽14 小时前
宠物商城系统
java·开发语言·vue·毕业设计·springboot·课程设计·宠物
csbysj202014 小时前
Lua 函数
开发语言
头发还在的女程序员14 小时前
三天搞定招聘系统!附完整源码
开发语言·python
温轻舟14 小时前
Python自动办公工具06-设置Word文档中表格的格式
开发语言·python·word·自动化工具·温轻舟
p***c94914 小时前
PHP在电商中的电商系统
开发语言·php