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

相关推荐
WJ.Polar13 小时前
Java封装、继承、多态
java·开发语言
摇滚侠13 小时前
Java 中如何表示负数,有符号和无符号的区别,补码的计算规则,char byte short int long 的范围
java·开发语言
weixin_3077791313 小时前
C++代码实现MATLAB中的fitrtree函数功能
开发语言·c++·算法·matlab
爱读书的小胖14 小时前
Codewars:Rot13(C)解题分析
c语言·开发语言
鸽鸽程序猿14 小时前
【项目】【在线判题系统】b端题目增删改
开发语言·python
Lhappy嘻嘻14 小时前
读懂 JVM:内存模型、类加载机制、分代回收
java·开发语言·jvm
weixin_3077791315 小时前
C++代码实现MATLAB中的spectralcluster函数功能
开发语言·c++·算法·matlab
鸽鸽程序猿15 小时前
【项目】【在线判题系统】c端:竞赛报名
c语言·开发语言
Wang's Blog15 小时前
Java 项目实战: 交友项目 - 个人资料管理的需求分析与接口设计
java·开发语言·交友
1024奇点15 小时前
【仓颉语言入门 · 第二篇 第 8 课】
开发语言·数据库·ide·mysql·开源