Accounts.framework

Accounts Framework  은 Twitter 계정을 관리 하는 Framework 이며, 목적은 아래의 3가지라고 볼수 있습니다.
 

1. Account 접근
2. Account 추가
3. Account 유효성 체크


Accounts Framework의 Class 들

ACAcccountStore
ACAccount 
ACAccountType
ACAccountCredential


Account 목록 가져오기.
 
Default로 account를 접근하는것이 금지되어있기 때문에, 권한을 요청해야 합니다.
  ACAccountStore *store = [[ACAccountStore alloc] init]; 
    ACAccountType *twitterType = [store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
    [store requestAccessToAccountsWithType:twitterType
                     withCompletionHandler:^(BOOL granted, NSError *error) {
                         if(granted){
                            //accessgranted !
                             NSLog(@"granted = %d",granted);
                             
                             NSArray *accounts = [store accountsWithAccountType:twitterType];
                             NSLog(@"accounts = %@", accounts);
                         }
                         }];
    [store release];

 
권한을 요청하면, 위와 같은 권한 요청 팝업이 나오게 되며,  사용자가 허락하거나 거절 할 수 있습니다.
한번 허락을 했다고 해서,  계속 허락되는것은 아니며,
사용자는 Settings -> Twitter 에서 허락 여부를 On/Off 할 수 있습니다.

 
Allow 한 후에,  위의 코드를 다시 실행 시켜 보면,

2011-10-14 16:34:07.600 TwitterTest[3364:12103] accounts = (

    "type:com.apple.twitter\nidentifier: 527A4FE0-FBAA-40A1-A7C8-C6FA2EEE9698\naccountDescription: @liketaehoon\nusername: liketaehoon\nobjectID: x-coredata://0102DFCE-5B1C-438B-B14B-D9BB471DD885/Account/p2\nenabledDataclasses: {(\n)}\nproperties: {\n    \"user_id\" = 48573923;\n}\nparentAccount: (null)\nowningBundleID:com.apple.Preferences"

)

 
이렇게 계정 정보가 읽어 집니다.

Twitter 계정 추가.

계정을 추가 하는 방법도 상당히 쉽습니다. 
ACAccount *account = [[ACAccount alloc] initWithAccountType:twitterType];
ACAccountCredential *oauthCredential = [[ACAccountCredential alloc] initWithOAuthToken:token
tokenSecret:secret]; [accountStore saveAccount:account withCompletionHandler:^(BOOL success,
account.credential = oauthCredential; NSError *error) {
if (success) {
//account validated and saved
} else {
//save failed, handle your errors! !}
}];
[oauthCredential release];
[account release];

OAuthToken을 얻어 오는것은 해당포스트의 내용을 벗어나는 일이라 설명하지 않겠습니다.
ACAccount  Object 생성,
OAuthToken을 이용해, ACAccountCredential Object를 만들어, ACAcount 에 넣어주고,
ACAccountStore를 통해 save 하면됩니다.

ACAccountStore단에서 validating도 해주게 됩니다.

나의 App에서 Twitter 계정을 로그인하게 해주는 기능을 제공해야 할까는 고민해봐야 겠지만,
상당히 쉽게 사용할 수 가 있습니다.


Accounts.framework 에 대한 짧은 생각.

Accounts.framework이 Twitter뿐아니라,
Facebook 이나 기타 서비스들을 품을 수 있게 설계된 framework인것으로 판단되어,
앞으로의 방향이 기대되는 framework이라고도 볼수 있겠네요 :)

 

+ Recent posts