测试测试过 | ✗ |
语言语言 | Obj-CObjective C |
协议 | MIT |
发布最后发布 | 2017年3月 |
由Bogdan Laukhin和Alex Moskvin维护。
此仓库包含用于在您的Objective-C iOS应用程序中实现Sequencing.com的OAuth2身份验证的CocoaPod插件代码,这样您的应用程序就可以安全地访问
Sequencing.com使用标准OAuth方法,允许应用程序从第三方应用中无密码暴露用户密码的方式,以有限的权限访问HTTP服务上的用户账户。OAuth作为最终用户的代表,向服务提供授权令牌,以授权共享特定账户信息。
首先,用户通过点击授权代码链接打开了web页面
https://sequencing.com/oauth2/authorize?redirect_uri=REDIRECT_URL&response_type=code&state=STATE&client_id=CLIENT_ID&scope=SCOPES
以下是链接组件的解释
https://sequencing.com/oauth2/authorize
- API授权端点redirect_uri=REDIRECT_URL
- 服务授予授权代码后将用户代理重定向到此处response_type=code
- 指定您的应用程序正在请求授权代码授权state=STATE
- 包含将被与服务器回答中的相同代码进行比较的随机验证码,以便验证响应是否被欺骗client_id=CLIENT_ID
- 应用程序客户端ID(API如何识别应用程序)scope=CODES
指定应用程序请求的访问级别用户必须首先登录到服务,以验证其身份(除非他们已经登录)。然后,服务将提示用户授权或拒绝应用程序访问他们的账户。以下是一个授权应用程序提示示例
当用户点击“授权应用”时,服务将打开在授权请求期间指定的 redirect_URI 网址。在 iOS 应用程序中使用了以下 redirect_uri
authapp://Default/Authcallback
一旦你的应用程序检测到 redirect_uri 页面已经打开,它应该分析服务器的响应与状态验证码。如果状态验证码与在授权请求中发送的相匹配,那么意味着服务器的响应是有效的。现在我们可以从服务器响应中获取授权码。
应用程序通过将授权码(如上所述从服务器响应中获取)以及认证详情(包括客户端密钥)传递给 API 令牌端点来请求访问令牌。以下是对 Sequencing.com 令牌端点的示例 POST 请求
https://sequencing.com/oauth2/token
以下 POST 参数需要发送
如果授权是有效的,API 将向应用程序发送一个包含令牌对象的 JSON 响应。令牌对象包含 accessToken、其 expirationDate、tokenType、scope 和 refreshToken。
如果你想在现有项目或新项目中安装和使用 OAuth 逻辑和文件选择器逻辑,请遵循以下说明。
在 Xcode 中创建一个新的项目
安装 pod
$ pod init
在 Podfile 中指定 "sequencing-oauth-api-objc" pod 参数
pod 'sequencing-oauth-api-objc', '~> 2.0.4’
在你的项目中安装依赖项: $ pod install
$ open *.xcworkspace
添加应用程序传输安全设置
注册应用程序参数和代理
添加导入
#import "SQOAuth.h"
#import "SQToken.h"
#import "SQAuthorizationProtocol.h"
订阅你的类以使用授权协议
<SQAuthorizationProtocol>
通过 shared instance 方法访问 SQOAuth
[SQOAuth sharedInstance]
注册你的应用程序参数和代理
- (void)registerApplicationParametersCliendID:(NSString *)client_id
clientSecret:(NSString *)client_secret
redirectUri:(NSString *)redirect_uri
scope:(NSString *)scope
delegate:(UIViewController<SQAuthorizationProtocol> *)delegate;
其中
client_id - your app CLIENT_ID
client_secret - your app CLIENT_SECRET
redirect_uri - your app REDIRECT_URI
scope - your app SCOPE
delegate - UIViewController instance that conform to "SQAuthorizationProtocol" protocol
使用授权方法
实现 SQAuthorizationProtocol 中的方法
- (void)userIsSuccessfullyAuthorized:(SQToken *)token
- (void)userIsNotAuthorized
- (void)userDidCancelAuthorization
你可以通过 authorizeUser 方法授权用户
[[SQOAuth sharedInstance] authorizeUser];
在 userIsSuccessfullyAuthorized
方法中,你将收到包含以下 5 个具有清晰标题的属性的 SQToken 对象
NSString *accessToken
NSDate *expirationDate
NSString *tokenType
NSString *scope
NSString *refreshToken
访问最新的令牌
token:
方法(它返回更新后的令牌): [[SQOAuth sharedInstance] token:^(SQToken *token) {}];
注册新账户/重置密码方法
callRegisterResetAccountFlow
方法即可 - 它将打开对话框弹出窗口 [[SQOAuth sharedInstance] callRegisterResetAccountFlow];
此仓库由 Sequencing.com 积极维护。如需更多信息或仅仅打招呼,请联系 Sequencing.com 生物信息学团队[email protected]。
我们鼓励您积极地进行分支合并。如果您有兴趣更新主分支,请发送给我们一个Pull Request。如果您的更改贡献积极,我们将继续使用。