2013-06-12 3 views
2

나는 몇 주 전에 iOS 개발 작업을 시작했으며, 최근에는 소셜 네트워크를 앱 (Facebook, Twitter, LinkedIn)에 통합하려고했습니다. 나는 페이스 북과 트위터 로그인을 통합으로 관리했지만 LinkedIn에 머물러 있습니다.linkedin Oauth 로그인 기억 방법

LinkedIn 통합 https://github.com/synedra/LinkedIn-OAuth-Sample-Client에이 예제를 사용하면 LinkedIn에 로그인 할 수 있지만 일단 앱이 닫히면 다시 로그인해야합니다.

앱이 로그인 한 사용자를 기억하도록하려면 어떻게해야하며 내 애플리케이션의 다른보기에서 로그인 한 액세스 토큰을 사용하여 LinkedIn (소셜, 네트워크 등)의 피드 가져 오기를 구현해야합니까?

+0

필자는 해당 라이브러리를 사용하지 않았지만 oauth의 중요한 부분은 인증 중에 액세스 토큰을 얻어 이후 요청에 서명하는 것입니다. 그 도서관은 어떻게 든 그것을하고 있습니다. 저기에 저기에 액세스 토큰에 대한 저명한 getter와 setter가 있어야합니다. 일단 그것을 찾으면, 첫 번째 인증 후에 장치에 토큰을 유지하고 다음 앱 시작시 토큰을 읽고 다시 설정합니다. – danh

+0

장치에 토큰을 어떻게 보관해야합니까? 어떻게 든 NSUserDefaults를 사용합니까? – user2282749

+0

그건 편도, 파일 시스템, 키 체인 서비스 (https://developer.apple.com/library/ios/#documentation/security/conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html%23//apple_ref/doc/)입니다. uid/TP30000897-CH208-SW1) – danh

답변

0

사용자가 앱에 로그인하면 LinkedIn API를 통해 액세스 토큰을 요청해야합니다. 그런 다음 NSUserDefaults를 사용하여이 액세스 토큰을 저장합니다. 따라서 사용자가 앱을 열 때 액세스 기록의 유무를 확인합니다. 액세스 기록이 있으면 사용자가 이미 앱에 로그인했습니다.

- (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); 
    }]; 
} 
관련 문제