ADNLogin 2.1.0

ADNLogin 2.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2015年3月

未命名 维护。



ADNLogin 2.1.0

  • Bryan Berg

ADNLogin-SDK-iOS

这是iOS App.net登录SDK的文档。它允许用户无需在每款应用中输入密码,而是从App.net Passport iOS应用中进行授权。此应用允许您浏览App.net目录,并执行账户管理功能。

SDK的另一个重要功能是,它允许您无缝提供安装Passport的选项,因此无账户的用户可以注册App.net。默认的注册流程如下所述

ADNLogin signup flow

以上从左至右,步骤如下

  1. 在您的登录视图或添加账户屏幕上,展示一个界面,允许用户启动或安装Passport。(这假设用户尚未安装Passport。)
  2. 当用户点击“安装Passport”按钮时,显示一个活动指示器,告知用户正在执行操作。
  3. 显示App Store并邀请用户下载Passport以创建账户。虽然在上面的截图中不可见,但商店中的第一个截图将针对告知用户Passport用于账户创建而量身定制。
  4. 当StoreKit关闭后,登录SDK开始轮询过程以确定Passport应用程序是否已安装。一旦安装,它将自动启动。如果轮询超时(例如,用户在未安装的情况下取消StoreKit视图控制器),视图将返回到其原始状态。如果Passport在StoreKit关闭后的30秒内变得可启动,它将自动启动。
  5. 用户将看到App.net Passport的启动画面。(当从登录SDK启动时,此屏幕可能包含有关启动Passport的应用的额外信息。)
  6. 用户完成登录或注册/入门流程,并将显示用于启动Passport的应用的授权对话框。
  7. 用户使用访问令牌返回到启动Passport的应用。

ủ在一个示例应用中实现了此流程,位于SDK的Examples文件夹中。如图中所示,作为白色视图可见的覆盖视图也包含在SDK中。您可以根据需要自定义此视图的外观或重新实现它。我们建议您在保持用户体验一致性方面保持复制和功能的相似性。

变更日志

2.1.0: 添加了查找朋友、邀请用户和查看推荐用户关注的补丁。删除了adnLoginDidEndFindFriends代理方法。(测试应用以再次变得活跃,以确定何时返回这些活动。)这些将不会在Passport 1.1发布前工作。

用法

SDK 设计为只需依赖 iOS 本身,无需其他依赖项。它应该与 iOS 5.1+ 兼容,尽管需要使用支持 ARC 和“现代”对象字面量支持的现代 SDK。(如果这给任何人带来问题,我们可能可以更改这一点。)

您需要在您的应用程序的 Info.plist 文件中定义一个特定的 URL 方案,该方案将使登录 SDK 能够识别您。此 URL 方案的“标识符”必须以特定方式设置。以下是一个示例

App.net app management screenshot

应按以下方式输入 URL 方案编辑器

Xcode Info.plist editor screenshot

通常,开发者会创建多个应用程序,这些应用程序共享相同的 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 文件。