身份认证
身份认证API提供了一些工具来认证Steam用户的身份以及判断用户是否拥有应用的所有权。
Note: 身份认证API需要一个额外的动态库。 请从Steamworks SDK (<steam_sdk-path>/public/steam/lib/
目录)复制 sdkencryptedappticket.dll
/libsdkencryptedappticket.dylib
/libsdkencryptedappticket.so
文件到应用文件夹 <greenworks>/lib
中。
var greenworks = require('./greenworks');
greenworks.init();
greenworks.getEncryptedAppTicket('test_content', function(ticket) {
console.log("ticket: " + ticket.toString('hex'));
// Specify the secret key.
var key = new Buffer(32);
// TODO: you must initialize Buffer key with the secret key of your game here,
// e.g. key = new Buffer([0x0a, ..., 0x0b]).
assert(key.length == greenworks.EncryptedAppTicketSymmetricKeyLength)
var decrypted_app_ticket = greenworks.decryptAppTicket(ticket, key);
if (decrypted_app_ticket) {
console.log(greenworks.isTicketForApp(decrypted_app_ticket,
greenworks.getAppId()));
console.log(greenworks.getTicketAppId(decrypted_app_ticket));
console.log(greenworks.getTicketSteamId(decrypted_app_ticket));
console.log(greenworks.getTicketIssueTime(decrypted_app_ticket));
}
}, function(err) { throw err; });
1. 获取身份验证会话ticket
greenworks.getAuthSessionTicket(success_callback, [error_callback])
-
success_callback
Function(ticket)-
ticket
Object:-
ticket
Buffer:ticket
的值。 -
handle
Integer: 该ticket返回的handle
。
-
-
-
error_callback
Function(err)
获取要发送给希望对您进行身份验证的实体的ticket。
ticket buffer 可以像 ticket.toString('hex')
这样在 Web API ISteamUserAuth/AuthenticateUserTicket
中被使用,这样就可以从游戏服务器安全的获得授权的Steam ID。 如果票证未被使用,则需要使用 handle
来将ticket作废。
注意一旦创建ticket的进程终止了,那么生成出来的ticket就无效了。 所以如果您想要在某些临时进程中创建ticket,请确保这些ticket在身份验证结束前保持有效!
2. 取消身份ticket
greenworks.cancelAuthTicket(ticket_handle)
-
ticket_handle
Integer: 该ticket返回的handle
。
将请求的session ticket 作废。
3. 获取加密应用ticket
greenworks.getEncryptedAppTicket(user_data, success_callback, [error_callback])
-
user_data
String: 将要加密到ticket中的任意值。将会以utf-8编码存储在ticket中。 -
success_callback
Function(encrypted_ticket)-
encrypted_ticket
Buffer: 加密过的ticket。
-
-
error_callback
Function(err)
加密ticket可以用来从客户端获取认证的Steam Id,而无需向Steam的API服务器发送网络请求。 这些ticket可以通过加密应用的ticket秘钥来进行解密。 在解密之后,可以通过Steamworks SDK中提供的加密应用ticket库,从ticket中查看用户的Steam ID、App ID、以及 VAC ban状态。
4. 解密应用ticket
greenworks.decryptAppTicket(encrypted_ticket, decryption_key)
-
encrypted_ticket
Buffer: 加密过的ticket。 -
decryption_key
Buffer: 用于解密的秘钥。其长度应该是greenworks.EncryptedAppTicketSymmetricKeyLength
。
使用解密key可以堆加密过的应用ticket进行解密。 如果解密成功则会返回一个 Buffer
;否则会返回 Null
。
5. 是该应用的ticket
greenworks.isTicketForApp(decrypted_ticket, app_id)
-
decrypted_ticket
Buffer: 解密过的ticket。 -
app_id
Integer: 这个app的id。
返回一个 Boolean
值,表示解密ticket是否适用于该应用。
6. 获取ticket的发布时间
greenworks.getTicketIssueTime(decrypted_ticket)
-
decrypted_ticket
Buffer: 解密过的ticket。
返回一个 Integer
,表示该ticket的发布时间。
7. 获取ticket对应的SteamId
greenworks.getTicketSteamId(decrypted_ticket)
-
decrypted_ticket
Buffer: 解密过的ticket。
返回一个 SteamID 对象,表示该ticket的steam id。