Added apple gamekit auth

Untested rn
This commit is contained in:
Joe Bain
2026-01-26 15:36:05 +00:00
parent ccd90508dd
commit ac73dab494
4 changed files with 22655 additions and 19 deletions

View File

@@ -0,0 +1,52 @@
var Parse = require('parse/node').Parse;
const { URL } = require('url');
var jwt = require('jsonwebtoken');
var jwksClient = require('jwks-rsa');
var verifier = require('gamecenter-identity-verifier');
// Returns a promise that fulfills iff this nsa id token is valid
function validateAuthData(authData, authOptions) {
console.log("going to validate for apple");
console.log(authData);
var necessaries = ["timestamp", "salt", "id", "bundleId", "signature", "publicKeyUrl"];
for (var necessary in necessaries) {
if (!(necessary in authData)) {
error("Auth data does not have property " + necessary);
}
}
var identity = {
publicKeyUrl: authData["publicKeyUrl"],
timestamp: authData["timestamp"],
signature: authData["signature"],
salt: authData["salt"],
playerId: authData["id"],
bundleId: authData["bundleId"]
};
return new Promise(function(resolve, reject) {
verifier.verify(identity, function (err, token) {
if (!err) {
resolve(token);
}
else {
reject("Error authenticating with gamekit: " + err.message);
}
});
});
}
// we're validating the bundleId in the in the user auth method
function validateAppId() {
return Promise.resolve();
}
function error(message) {
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, message);
}
module.exports = {
validateAppId,
validateAuthData
};

View File

@@ -18,6 +18,7 @@ const wechat = require("./wechat");
const weibo = require("./weibo");
const steam = require("./steam");
const nintendo = require("./nintendo");
const apple = require("./apple");
const anonymous = {
validateAuthData: () => {
@@ -47,7 +48,8 @@ const providers = {
wechat,
weibo,
steam,
nintendo
nintendo,
apple
}
function authDataValidator(adapter, appIds, options) {
return function(authData) {