这是iOS App.net登录SDK的文档。它允许用户无需在每款应用中输入密码,而是从App.net Passport iOS应用中进行授权。此应用允许您浏览App.net目录,并执行账户管理功能。
SDK的另一个重要功能是,它允许您无缝提供安装Passport的选项,因此无账户的用户可以注册App.net。默认的注册流程如下所述
以上从左至右,步骤如下
ủ在一个示例应用中实现了此流程,位于SDK的Examples文件夹中。如图中所示,作为白色视图可见的覆盖视图也包含在SDK中。您可以根据需要自定义此视图的外观或重新实现它。我们建议您在保持用户体验一致性方面保持复制和功能的相似性。
2.1.0: 添加了查找朋友、邀请用户和查看推荐用户关注的补丁。删除了adnLoginDidEndFindFriends
代理方法。(测试应用以再次变得活跃,以确定何时返回这些活动。)这些将不会在Passport 1.1发布前工作。
SDK 设计为只需依赖 iOS 本身,无需其他依赖项。它应该与 iOS 5.1+ 兼容,尽管需要使用支持 ARC 和“现代”对象字面量支持的现代 SDK。(如果这给任何人带来问题,我们可能可以更改这一点。)
您需要在您的应用程序的 Info.plist 文件中定义一个特定的 URL 方案,该方案将使登录 SDK 能够识别您。此 URL 方案的“标识符”必须以特定方式设置。以下是一个示例
应按以下方式输入 URL 方案编辑器
通常,开发者会创建多个应用程序,这些应用程序共享相同的 App.net 客户端 ID,但在 iOS 应用店中以不同的应用程序表示。iTunes 中的每个应用程序都应该有具有唯一应用程序标识符的替代版本 URL 方案,例如,iPad 版本的应用程序可以使用“ipad”。此后缀应与在 App.net 应用管理界面中输入的信息相匹配。
每个包标识符必须与 App.net 应用的 开发者管理界面 中的 App.net 应用关联。您可以为测试应用程序白名单您的包标识符,或创建一个适用于上市应用程序的目录页。(您不必使您的页面公开,即可使用 SDK。)如果您收到“无法加载授权对话框”错误,则可能是包标识符不匹配的问题。请注意,包标识符匹配是区分大小写的。请确保您精确匹配包标识符。
在您的应用程序代理的头部文件中导入 ADNLogin.h,并使您的代理实现 ADNLoginDelegate 协议。
注意:自 1.x.x 版本以来,ADNLoginDelegate 协议已发生重大变化。请确保您在代理上已定义了正确的方法。
#import "ADNLogin.h"
@interface SLAppDelegate : UIResponder <UIApplicationDelegate, ADNLoginDelegate>
...
@end
在您的应用程序代理的 .m 文件中实例化 SDK,并设置应用程序将请求的授权作用域
@implementation SLAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
ADNLogin *adn = [ADNLogin sharedInstance];
adn.delegate = self;
adn.scopes = @[@"stream"];
...
确保登录 SDK 有机会处理任何返回的打开 URL
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [self.adn openURL:url sourceApplication:sourceApplication annotation:annotation];
}
实现 ADNLoginDelegate 协议方法
#pragma mark - ADNLoginDelegate
- (void)adnLoginDidSucceedForUserWithID:(NSString *)userID username:(NSString *)username token:(NSString *)accessToken {
// Stash token in Keychain, make client request with ADNKit, etc.
}
- (void)adnLoginDidFailWithError:(NSError *)error {
// Report error to user.
// App.net Passport 1.0.474 does not currently call this method, but newer versions will.
}
凭据存储目前不在 SDK 的作用范围内。请确保以安全的方式存储凭据,即,在密钥链中而不是在 NSUserDefaults 中存储。我们建议为此目的使用 SSKeychain。
还包括了一个用于启动 App.net Passport 的示例视图(您可能希望创建子类并自定义样式)以及一个展示 ADNLogin SDK 用法的示例应用程序。
当然,如果您了解自己在做什么,请随意偏离这些说明。;) 编码方面每个人都有自己的习惯和偏好——对于 Objective-C 来说,这似乎尤为正确。
欢迎反馈。
如果您需要帮助,请随时进入 App.net 开发者 Patter 房间。
MIT。请参阅仓库中包含的 LICENSE 文件。