linkedin Oauth如何记住登录

时间:2013-06-12 20:41:06

标签: iphone ios objective-c oauth linkedin

几周前我开始使用iOS开发,最近我一直在尝试将社交网络整合到应用程序(Facebook,Twitter,LinkedIn)中。我设法做Facebook和Twitter签到集成,但我被困在LinkedIn上。

使用此示例进行LinkedIn集成https://github.com/synedra/LinkedIn-OAuth-Sample-Client,我可以登录LinkedIn,但一旦我的应用关闭,我必须重新登录。

我应该怎么做才能让应用程序记住已登录的用户以及我应该如何使用登录时的访问权限来实现从我的应用程序中的其他视图上获取LinkedIn(社交,网络等)的提要? / p>

1 个答案:

答案 0 :(得分:0)

当用户登录应用程序时,您应该通过LinkedIn API请求访问令牌。之后,使用NSUserDefaults保存此访问令牌。因此,当用户打开应用程序时,您将检查是否存在accesstoken。如果存在accesstoken,则用户已登录到应用程序。

- (void)getAccessToken:(NSString *)authorizationCode success:(void (^)(NSDictionary *))success failure:(void (^)(NSError *))failure 
{
   NSString *accessTokenUrl = @"/uas/oauth2/accessToken?grant_type=authorization_code&code=%@&redirect_uri=%@&client_id=%@&client_secret=%@";
   NSString *url = [NSString stringWithFormat:accessTokenUrl, authorizationCode, [self.application.redirectURL LIAEncode], self.application.clientId, self.application.clientSecret];

  [self POST:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
   NSString *accessToken = [responseObject objectForKey:@"access_token"];
   NSTimeInterval expiration = [[responseObject objectForKey:@"expires_in"] doubleValue];

   // store credentials
   NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

   [userDefaults setObject:accessToken forKey:LINKEDIN_TOKEN_KEY];
   [userDefaults setDouble:expiration forKey:LINKEDIN_EXPIRATION_KEY];
   [userDefaults setDouble:[[NSDate date] timeIntervalSince1970] forKey:LINKEDIN_CREATION_KEY];
   [userDefaults synchronize];

   success(responseObject);
   }  failure:^(AFHTTPRequestOperation *operation, NSError *error) {
      failure(error);
   }];
}
相关问题