PFTwitterSignOn 0.1.0

PFTwitterSignOn 0.1.0

测试测试通过的
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2014年12月

未声明 维护。



 
依赖
LVTwitterOAuthClient~> 0.0.1
AFOAuth1Client~> 0.3.3
 

PrixFixe + Twitter

动机

我为几个iOS应用实现了Twitter SSO,这个过程相对简单,直到你需要认证用户的访问令牌或密钥。

到处看了看,找不到一个库来隐藏从Twitter获取用户信息的令人烦躁的逆认证过程,所以我就写了这个包装器,允许基于块的简单Twitter认证,支持新式原生动议认证和旧式重定向认证。

这个库基于LVTwitterOAuthClient(这个项目看起来是基于Sean CookTWReverseAuthExample构建的),以及AFOAuth1Client来实现OAuth 1.0重定向流程。

用法

请参阅示例项目以获取完整的实现。以下是基本步骤:

  • 在您的Podfile中添加PFTwitterSignOn

  • 添加一个自定义URL方案以处理来自Safari的回调。这将是您的包标识符。

Custom URL Scheme

  • 在您的App Delegate头文件中导入<AFOAuth1Client/AFOAuth1Client.h>,并添加以下方法(或将其添加到现有的方法中):
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
        [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:kAFApplicationLaunchedWithURLNotification object:nil userInfo:@{kAFApplicationLaunchOptionsURLKey: url}]];

        return YES;
    }
  • 在使用此库请求访问之前,请使用以下方法设置您的客户端密钥和密钥:
    [PFTwitterSignOn setCredentialsWithConsumerKey:@"<your_consumer_key>" andSecret:@"<your_consumer_secret>"];
  • PFTwitterSignOn会发出通知,以便您知道何时显示加载对话框。您可以在进行认证的任何控制台中监听这两个通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showLoadingWithNotification:) name:PF_TWITTER_SIGN_ON_LOADING_STARTED_NOTIFICATION object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showLoadingWithNotification:) name:PF_TWITTER_SIGN_ON_LOADING_ENDED_NOTIFICATION object:nil];

请求访问

PFTwitterSignOn有两种方法来请求用户的Twitter账号。第一种允许您传递一个视图,并显示一个标准操作表让用户选择账号。如果用户只有一个账号,这两种方法在用户体验上是相同的。

第一方法是:

+ (void)requestAuthenticationInView:(UIView *)view andCompletion:(twitterAuthenticationCallback)callback;

这个视图是如果用户有多个账号时您想显示操作表的视图。

另一个方法是允许您创建一个自定义选择视图,并将一个包含ACAccount数组的数组和回调块传递进去

+ (void)requestAuthenticationWithSelectCallback:(twitterSelectAccountCallback)selectCallback andCompletion:(twitterAuthenticationCallback)callback;

twitterSelectCallback是一个块,其定义如下:void (^twitterSelectAccountCallback)(NSArray *accounts, twitterAccountCallback callback);

twitterAccountCallback也是一个块,其定义如下:void (^twitterAccountCallback)(ACAccount *account);

PFTwitterSignOn会自动检测用户是否已存储了Twitter账号,如果没有,它将通过浏览器使用OAuth流程,因此您始终可以 expect 能够获取用户信息。两种认证方法都会调用一个完成回调,它的定义如下:

void (^twitterAuthenticationCallback)(NSDictionary *accountInfo, NSError *error);

字典包括了从API返回的所有用户账户信息,以及2个额外的键,分别为accessTokentokenSecret。这些都是你代表用户进行调用所需的凭证。