首页 文章

linkedin Oauth如何记住登录

提问于
浏览
2

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

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

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

1 回答

  • 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);
       }];
    }
    

相关问题