iOS / iPhone 端末内に保存してある Twitter アカウントの情報を取得するサンプルコード。 ACAccount を利用する。
// completion コールバック関数の引数で ACAccount の配列と NSError を取得する
func getTwitterAccounts(completion:(accounts:[ACAccount]?, error: NSError?) -> Void) {
// iOS 端末で使用可能な Twitter アカウントの一覧を取得する
let accountStore = ACAccountStore()
let accountType = accountStore.accountTypeWithAccountTypeIdentifier(ACAccountTypeIdentifierTwitter)
accountStore.requestAccessToAccountsWithType(accountType, options: nil) { (granted:Bool, error:NSError?) -> Void in
if let err = error {
completion(accounts: nil, error: err)
return;
}
if !granted {
let info = [NSLocalizedDescriptionKey: "Cannot access to account data"]
let nserr = NSError.init(domain: "", code: -1, userInfo: info)
completion(accounts: nil, error: nserr)
return;
}
let accounts = (accountStore.accountsWithAccountType(accountType) as? [ACAccount])!
// Twitter アカウントの情報を出力
for account in accounts {
// screen_name は ACAccount.username で取得
print("screen_name: \(account.username)")
// user_id と ACPropertyFullName は properties から取得
if let properties = account.valueForKey("properties") as? [String:String] {
print("user_id: \(properties["user_id"])")
print("ACPropertyFullName: \(properties["ACPropertyFullName"])")
// properties の中身を出力してみたら、
// user_id と ACPropertyFullName しか無かった。
print("properties: \(properties)")
}
}
completion(accounts: accounts, error: nil)
}
}
-
ref.
- Accounts Framework Reference
- How does one access the _properties Dictionary object of a Swift 1.2 ACAccount object? - Stack Overflow
- ACAccount Twitterのuser_idを取得する - Qiita
# 取得できる Twitter アカウントの情報 (user_id とか) が Apple の公式リファレンスでは見つからなかったけど、どこかにあるんだろうか。。。
tags: swift ios iphone
Posted by NI-Lab. (@nilab)