Получение данных о пользователе Twitter с помощью swift

Несколько дней я искал, как я могу получить данные пользователя на основе его / ее учетной записи Twitter, я использую вход в Twitter в своем приложении, и я ничего не нашел об этом в Swift, поэтому я спрашиваю! Как я могу получить имя пользователя, адрес электронной почты и изображение профиля пользователя, вошедшего в систему с помощью Parse, из Twitter, чтобы сохранить их в облаке синтаксического анализа?


person loulou milo    schedule 12.01.2016    source источник


Ответы (2)


Вы можете легко получить доступ к имени пользователя и идентификатору пользователя, вошедшего в систему. Внутри большинства методов входа в Twitter вы увидите что-то вроде этого:

@IBAction func loginTwitter(sender: UIBarButtonItem) {
    Twitter.sharedInstance().logInWithCompletion {
        (session, error) -> Void in
        if (session != nil) {

            print(session?.userName)
            print(session?.userID)
        } else {
            print("error")

        }
    }
}

Насколько мне известно, Twitter не раскрывает адреса электронной почты пользователей.

Для изображения профиля вам необходимо отправить запрос GET. Вот некоторый код, который может не соответствовать последней версии TwitterKit, но должен, по крайней мере, дать вам представление о том, как должен быть отформатирован запрос.

func getUserInfo(screenName : String){
    if let userID = Twitter.sharedInstance().sessionStore.session()!.userID {
        let client = TWTRAPIClient(userID: userID)
        let url = "https://api.twitter.com/1.1/users/show.json"
        let params = ["screen_name": screenName]
        var clientError : NSError?
        let request = Twitter.sharedInstance().APIClient.URLRequestWithMethod("GET", URL: url, parameters: params, error: &clientError)

        client.sendTwitterRequest(request) { (response, data, connectionError) -> Void in
            if let someData = data {
                do {
                    let results = try NSJSONSerialization.JSONObjectWithData(someData, options: .AllowFragments) as! NSDictionary
                    print(results)

                } catch {
                }
            }
        }
    }
}

Вам нужно просмотреть полученный JSON и найти «profile_image_url_https» на пару уровней ниже.

Удачи!

person Casey Wagner    schedule 14.01.2016
comment
как узнать псевдоним?? - person Ravi Padsala; 06.08.2018

в Swift 4.2 и Xcode 10.1

Он также получает электронную почту.

import TwitterKit 


@IBAction func onClickTwitterSignin(_ sender: UIButton) {

    TWTRTwitter.sharedInstance().logIn { (session, error) in
        if (session != nil) {
            let name = session?.userName ?? ""
            print(name)
            print(session?.userID  ?? "")
            print(session?.authToken  ?? "")
            print(session?.authTokenSecret  ?? "")
            let client = TWTRAPIClient.withCurrentUser()
            client.requestEmail { email, error in
                if (email != nil) {
                    let recivedEmailID = email ?? ""
                    print(recivedEmailID)
                }else {
                    print("error--: \(String(describing: error?.localizedDescription))");
                }
            }

        //To get profile image url and screen name
        let twitterClient = TWTRAPIClient(userID: session?.userID)
            twitterClient.loadUser(withID: session?.userID ?? "") {(user, error) in
            print(user?.profileImageURL ?? "")
            print(user?.profileImageLargeURL ?? "")
            print(user?.screenName ?? "")
        }

            let storyboard = self.storyboard?.instantiateViewController(withIdentifier: "SVC") as! SecondViewController
            self.navigationController?.pushViewController(storyboard, animated: true)
        }else {
            print("error: \(String(describing: error?.localizedDescription))");
        }
    }
}

Для выхода

@IBAction func onClickTwitterSignout(_ sender: UIButton) {
    let store = TWTRTwitter.sharedInstance().sessionStore
    if let userID = store.session()?.userID {
        print(store.session()?.userID ?? "")
        store.logOutUserID(userID)
        print(store.session()?.userID ?? "")
        self.navigationController?.popToRootViewController(animated: true)
    }
}
person iOS    schedule 14.02.2019