ios – 设置第三方服务器与Game Center进行交互

我正在考虑在iOS游戏中添加一个功能,允许玩家创建自己的游戏级别,与其他玩家共享游戏级别,对他们进行评分等等.将有一个用户创建的级别的公共存储库,按创建日期排序,评级,难度或其他标准.

这种功能将需要第三方服务器.我在想,我将使用Sinatra创建一个RESTful API,并在Heroku上运行它.我的问题是:对API的请求进行身份验证最好的方式是什么?我不想要玩家创建用户名密码.我想使用游戏中心的ID系统.

有什么建议么?我从来没有做任何服务器端的东西,所以任何帮助是赞赏!

澄清

是的,我知道苹果公司不提供自己的系统.但它确实允许开发人员访问独特的游戏中心标识符(developer.apple.com/library/mac/#documentation/…),我希望我可以使用这种方式滚动我自己的身份验证系统,而不需要用户通过Facebook登录/微博/等.如果可能的话.

解决方法

看起来像iOS 7,这是可能的游戏中心使用:

[localPlayer generateIdentityVerificationSignatureWithCompletionHandler]

一旦您使用generateIdentity调用验证了播放器的身份,

>将玩家ID与服务器数据库上的用户相关联
>使用您的REST框架为后续调用提供的任何访问令牌/身份验证模式

https://developer.apple.com/library/ios/documentation/GameKit/Reference/GKLocalPlayer_Ref/Reference/Reference.html

另请参考,这里是我们最终根据generateIdentityVerificationSignatureWithCompletionHandler的响应发送到我们的服务器的字典

NSDictionary *paramsDict = @{
    @"publicKeyUrl":[publicKeyUrl absoluteString],@"timestamp":[Nsstring stringWithFormat:@"%llu",timestamp],@"signature":[signature base64EncodedStringWithOptions:0],@"salt":[salt base64EncodedStringWithOptions:0],@"playerID":localPlayer.playerID,@"bundleID":[[NSBundle mainBundle] bundleIdentifier]
};

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...