sign with apple后端验证一步完成

本文提供了一个简洁的Java工具类,用于完成Apple Sign in的后端验证。只需配置APPLICATION_ID、SECRET_KEY、FILE_KID和TEAM_ID,调用getUserInfo()方法即可。同时,文章还提及了实体类的定义以及相关的Maven依赖。需要注意的是,从Apple获取的公钥可能存在多个,必须根据identityToken中的kid选择正确的公钥,避免签名验证失败的问题,此工具类已解决该问题。
摘要由CSDN通过智能技术生成

老表瞧一瞧,懒人工具类sign with apple 配置好需要的参数APPLICATION_ID 、SECRET_KEY 、FILE_KID 、TEAM_ID ,调getUserInfo()方法就完工了,不废话,看工具类

package com.zjtx.util;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.auth0.jwk.Jwk;
import com.zjtx.dto.AppleReturnTokenDTO;
import com.zjtx.util.exception.ServiceException;
import io.jsonwebtoken.*;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.RSAPublicKeySpec;
import java.util.HashMap;
import java.util.Map;

/**
 * 苹果登录工具类
 * @author WangDeyu (汪德宇)
 * @date 2020-09-08 16:10:22
 * */
public class AppleThirdUtils {

    @Autowired
    static RestTemplate restTemplate;

    private static final Logger logger = LoggerFactory.getLogger(AppleThirdUtils.class);

    /**
     * client_id (应用id,从苹果注册应用获取)
     * */
    private static final String APPLICATION_ID = "";

    /**
     * 密钥key(从txt文件中获取)
     * */
    private static final String SECRET_KEY = "";

    /**
     * p8文件中获取的kid
     * */
    private static final String FILE_KID = "";

    /**
     * p8文件中获取的team_id
     * */
    private static final String TEAM_ID = "";

    /**
     * 固定值(用于验证token接口)
     * */
    private static final String GRANT_TYPE = "authorization_code";

    /**
     * 获取公钥地址
     * */
    private static final String PUBLIC_KEY_URL = "https://appleid.apple.com/auth/keys";

    /**
     * 获取验证token地址
     * */
    private static final String GET_ID_TOKEN = "https://appleid.apple.com/auth/token";

    /**
     * 苹果官网地址
     * */
    private static final String APPLE_URL = "https://appleid.apple.com";

    /**
     * 苹果验证成功后返回的用户信息中的登录时间
     * */
    private static fi
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Unity3D是一款流行的跨平台游戏开发引擎,支持多种移动平台和操作系统。最近,苹果推出了“Sign in with Apple”功能,该功能允许用户使用其Apple ID来登录第三方应用程序。 要在Unity3D中接入“Sign in with Apple”功能,需要遵循以下步骤: 1. 首先,确保你的Unity3D版本是最新的,以便能够支持最新的API和功能。 2. 在苹果开发者平台上创建一个新的App ID,并将其与你的Unity3D项目关联。确保在App ID设置中启用“Sign in with Apple”功能。 3. 在Unity3D中,编写代码以实现与苹果登录服务通信的逻辑。你需要使用Unity内置的网络API,通过发送HTTP请求和接收回复来实现与苹果服务器的通信。 4. 在Unity3D项目中创建一个用户界面,允许用户点击“Sign in with Apple”按钮。当用户点击这个按钮时,你的代码将向苹果服务器发送请求,获取用户的验证凭证。 5. 将从苹果服务器接收到的验证凭证与你的后端服务器通信。你的后端服务器需要验证这个凭证的有效性,并通过向苹果服务器发送请求获得用户的基本信息。 6. 在Unity3D中使用这些用户信息,例如显示用户的用户名、头像等。 需要注意的是,为了保护用户的隐私,苹果有一些要求和限制,开发人员需要遵守这些规定,例如要求提供“其他登录选项”以及对于用户与苹果登录服务的数据处理等。 总结:要在Unity3D中接入“Sign in with Apple”功能,你需要使用最新版本的Unity3D、遵循苹果开发者平台的规定、实现与苹果服务器的通信逻辑、创建用户界面、验证凭证、获取用户信息,并遵守苹果的隐私规定。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值