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이라고도 볼수 있겠네요 :)