| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | 
							- using System;
 
- using System.Collections;
 
- using System.Text;
 
- using AppleAuth;
 
- using AppleAuth.Enums;
 
- using AppleAuth.Extensions;
 
- using AppleAuth.Interfaces;
 
- using AppleAuth.Native;
 
- using Newtonsoft.Json;
 
- using UnityEngine;
 
- using UnityEngine.Networking;
 
- using UnityEngine.UI;
 
- public class AppleLoginHelper : MonoBehaviour
 
- {
 
-     public static AppleLoginHelper ins; //单例记录
 
-     private const string AppleUserIdKey = "AppleUserId";
 
-     private IAppleAuthManager _appleAuthManager;
 
-     bool _bSupportedPlatform ;
 
-     public bool bSupportedPlatform
 
-     { // 公共属性
 
-         get { return this._appleAuthManager == null?false:true; } // getter返回字段的值
 
-         set { _bSupportedPlatform = value; } // setter将传入的值赋给字段
 
-     }
 
-     private void Awake()
 
-     {
 
-         if (CommonConfig.StandaloneMode) return;
 
-         string sceneName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
 
-         Debug.Log("AppleLoginHelper当前场景名称: " + sceneName);
 
-         DontDestroyOnLoad(this);
 
-         gameObject.name = "AppleLoginHelper";
 
-         ins = this;
 
-     }
 
-     private void Start()
 
-     {
 
-         // If the current platform is supported
 
-         if (AppleAuthManager.IsCurrentPlatformSupported)
 
-         {
 
-             // Creates a default JSON deserializer, to transform JSON Native responses to C# instances
 
-             var deserializer = new PayloadDeserializer();
 
-             // Creates an Apple Authentication manager with the deserializer
 
-             this._appleAuthManager = new AppleAuthManager(deserializer);
 
-         }
 
-     }
 
-     private void Update()
 
-     {
 
-         // Updates the AppleAuthManager instance to execute
 
-         // pending callbacks inside Unity's execution loop
 
-         if (this._appleAuthManager != null)
 
-         {
 
-             this._appleAuthManager.Update();
 
-         }
 
-     }
 
-     //使用苹果正常登录
 
-     public void SignInWithAppleButtonPressed()
 
-     {
 
-         this.SignInWithApple();
 
-     }
 
-     //删除账号
 
-     public void SignInWithAppleButtonPressedDelete(Action success,Action fail)
 
-     {
 
-         this.DeleteSignInWithApple(success, fail);
 
-     }
 
-     
 
-     private void SetupLoginMenuForSignInWithApple()
 
-     {
 
-     }
 
-     private void SignInWithApple()
 
-     {
 
-         var loginArgs = new AppleAuthLoginArgs(LoginOptions.IncludeEmail | LoginOptions.IncludeFullName);
 
-         this._appleAuthManager.LoginWithAppleId(
 
-             loginArgs,
 
-             credential =>
 
-             {
 
-                 // If a sign in with apple succeeds, we should have obtained the credential with the user id, name, and email, save it
 
-                 PlayerPrefs.SetString(AppleUserIdKey, credential.User);
 
-                 //this.onAppleData(credential.User, credential);
 
-                 var appleIdCredential = credential as IAppleIDCredential;
 
-                 if (appleIdCredential != null)
 
-                 {
 
-                     //if (appleIdCredential.IdentityToken != null)
 
-                     //{
 
-                     //    var identityToken = Encoding.UTF8.GetString(appleIdCredential.IdentityToken, 0, appleIdCredential.IdentityToken.Length);
 
-                     //    Debug.Log("11===identityToken======= " + identityToken);
 
-                     //}
 
-                     //if (appleIdCredential.AuthorizationCode != null)
 
-                     //{
 
-                     //    var authorizationCode = Encoding.UTF8.GetString(appleIdCredential.AuthorizationCode, 0, appleIdCredential.AuthorizationCode.Length);
 
-                     //    Debug.Log("22===authorizationCode======= " + authorizationCode.Substring(0, 45));
 
-                     //}
 
-                     string _email = "";
 
-                     if (appleIdCredential.Email != null)
 
-                     {
 
-                         _email = appleIdCredential.Email;
 
-                     }
 
-                     Debug.Log("33===Email======= " + _email);
 
-                     string _fullName = "";
 
-                     if (appleIdCredential.FullName != null)
 
-                     {
 
-                         var fullName = appleIdCredential.FullName;
 
-                         if (appleIdCredential.FullName.PhoneticRepresentation != null)
 
-                         {
 
-                             var phoneticName = appleIdCredential.FullName.PhoneticRepresentation;
 
-                             //phoneticName.ToLocalizedString()
 
-                         }
 
-                         _fullName = fullName.ToLocalizedString();
 
-                     }
 
-                     Debug.Log("44===FullName======= " + appleIdCredential.FullName);
 
-                     var _identityToken = Encoding.UTF8.GetString(appleIdCredential.IdentityToken, 0, appleIdCredential.IdentityToken.Length);
 
-                     Debug.Log("11===identityToken======= " + _identityToken);
 
-                     LoginView.ins?.OnAppleLoginResp(_identityToken, _email, _fullName);
 
-                 }
 
-             },
 
-             error =>
 
-             {
 
-                 var authorizationErrorCode = error.GetAuthorizationErrorCode();
 
-                 Debug.LogWarning("Sign in with Apple failed " + authorizationErrorCode.ToString() + " " + error.ToString());
 
-                 this.SetupLoginMenuForSignInWithApple();
 
-                 LoginView.ins?.OnAppleLoginError();
 
-             });
 
-     }
 
-     private void DeleteSignInWithApple(Action success, Action fail)
 
-     {
 
-         var loginArgs = new AppleAuthLoginArgs(LoginOptions.IncludeEmail | LoginOptions.IncludeFullName);
 
-         this._appleAuthManager.LoginWithAppleId(
 
-             loginArgs,
 
-             credential =>
 
-             {
 
-                 var appleIdCredential = credential as IAppleIDCredential;
 
-                 if (appleIdCredential.AuthorizationCode != null)
 
-                 {
 
-                     var authorizationCode = Encoding.UTF8.GetString(appleIdCredential.AuthorizationCode, 0, appleIdCredential.AuthorizationCode.Length);
 
-                     Debug.Log("delete===authorizationCode======= " + authorizationCode.Substring(0, 45));
 
-                     StartCoroutine(LoginController.Instance.DdeleteUserByApple(authorizationCode, (res) =>
 
-                     {
 
-                         Debug.Log($"DdeleteUserByApple service rescode {res.code}, msg {res.msg}");
 
-                         if (res.code == 0)
 
-                         {
 
-                             Debug.Log("删除成功");
 
-                             this.SetupLoginMenuForSignInWithApple();
 
-                             PlayerPrefs.DeleteKey(AppleUserIdKey);
 
-                            
 
-                         }
 
-                     }));
 
-                 }
 
-                 success();
 
-             },
 
-             error =>
 
-             {
 
-                 var authorizationErrorCode = error.GetAuthorizationErrorCode();
 
-                 Debug.LogWarning("Sign in with Apple failed " + authorizationErrorCode.ToString() + " " + error.ToString());
 
-                 this.SetupLoginMenuForSignInWithApple();
 
-                 fail();
 
-             });
 
-     }
 
-     public bool HasAppleKey() {
 
-         return PlayerPrefs.HasKey(AppleUserIdKey);
 
-     }
 
-     public void DeleteAppleKey() {
 
-         PlayerPrefs.DeleteKey(AppleUserIdKey);
 
-     }
 
-    
 
- }
 
 
  |