从 Twitter 请求用户的电子邮件

Posted

技术标签:

【中文标题】从 Twitter 请求用户的电子邮件【英文标题】:Requesting user's email from Twitter 【发布时间】:2016-06-27 15:59:22 【问题描述】:

我正在尝试地址并将其放入 Firebase。我的应用被 Twitter 列入白名单,并在 apps.twitter.com 门户中激活了它。根据此处的 Fabric 文档,我将这段代码写了出来:

let twitterEmailClient = TWTRAPIClient.clientWithCurrentUser()
let twitterEmailRequest = twitterEmailClient.URLRequestWithMethod("GET", URL: "https://api.twitter.com/1.1/account/verify_credentials.json", parameters: ["include_email": "true", "skip_status": "true"], error: nil)
twitterEmailClient.sendTwitterRequest(twitterEmailRequest, completion:  (TWTREmailClientResponse: NSURLResponse?, TWTREmailClientEmail: NSData?, TWTREmailClientError: NSError?) in

    if TWTREmailClientError != nil 

        print("Twitter Email Client Error - \(TWTREmailClientError!.code): \(TWTREmailClientError!.localizedDescription)")

     else if TWTREmailClientResponse == nil 

        print("Twitter Email Client Error - valid connection not available")

     else if TWTREmailClientEmail != nil 

        print("Twitter Client Email - \(String(data: TWTREmailClientEmail!, encoding: NSUTF8StringEncoding))")

        FIRAuth.auth()?.currentUser?.updateEmail("\(TWTREmailClientEmail)", completion:  (updateEmailError: NSError?) in

            if updateEmailError != nil 

                print("Set Email from Twitter Error - \(updateEmailError)")

            
        )
    
)

再次,根据 Fabric 的文档,我应该得到一个 JSON 结果,包括“电子邮件”。结果如下:

Twitter 客户电子邮件 - 可选("\"id\":560366005,\"id_str\":\"560366005\",\"name\":\"丹 Levy\",\"screen_name\":\"DanLevy114\",\"location\":\"Buffalo, NY\",\"description\":\"Florida Tech \'20, Amherst \'16, ios 开发者\",\"url\":\"https:\/\/t.co\/KOtATAEV3X\",\"entities\":\"url\":\"urls\":[\ "url\":\"https:\/\/t.co\/KOtATAEV3X\",\"expanded_url\":\"http:\/\/Instagr.am\/danlevy114\",\"display_url\" :\"Instagr.am\/danlevy114\",\"indices\":[0,23]],\"description\":\"urls\":[],\"protected\" :false,\"followers_count\":292,\"friends_count\":196,\"listed_count\":4,\"created_at\":\"Sun 4 月 22 日 15:20:46 +0000 2012\",\"favourites_count\":1151,\"utc_offset\":-10800,\"time_zone\":\"大西洋 时间 (加拿大)\",\"geo_enabled\":true,\"verified\":false,\"statuses_count\":1305,\"lang\":\"en\",\"contributors_enabled\":false, \"is_translator\":false,\"is_translation_enabled\":false,\"profile_background_color\":\"C0DEED\",\"profile_background_image_url\":\"http:\/\/pbs.twimg.com\/profile_background_images \/743634202\/69dd45bc569542274b017cc25c1e464d.png\",\"profile_background_image_url_https\":\"https:\/\/pbs.twimg.com\/profile_background_images\/743634202\/69dd45bc569542274b017\",\"profile_background_image_url_https\" false,\"profile_image_url\":\"http:\/\/pbs.twimg.com\/profile_images\/745047852796289024\/BWFfrEoI_normal.jpg\",\"profile_image_url_https\":\"https:\/\/pbs .twimg.com\/profile_images\/745047852796289024\/BWFfrEoI_normal.jpg\",\"profile_banner_url\":\"https:\/\/pbs.twimg.com\/profile_banners\/560366005\/1466468226\",\ "profile_link_color\":\"0084B4\",\"profile_sidebar_border_color\":\"FFFFFF\",\"profile_sidebar_fill_color\":\"33FF33\",\"profile_text_color\":\"E05151\",\"pr ofile_use_background_image\":false,\"has_extended_profile\":true,\"default_profile\":false,\"default_profile_image\":false,\"following\":false,\"follow_request_sent\":false,\"notifications\ ":false")

我使用我的 Twitter 帐户登录,但没有出现电子邮件。我知道我有一封与我的 Twitter 帐户相关联的电子邮件。有什么想法吗?

【问题讨论】:

【参考方案1】:

我在 Twitter 上遇到了同样的问题。首先将 dev.twitter 中的权限更改为“只读”。

接下来,使用此代码登录 Twitter:

Twitter.sharedInstance().logInWithCompletion()  session, error in
        if let session = session 

            let credential = FIRTwitterAuthProvider.credentialWithToken(session.authToken, secret: session.authTokenSecret)

            FIRAuth.auth()?.signInWithCredential(credential)  (user, error) in
                if let error = error 
                    Alert.sharedInstance.showAlert("Error", message: error.localizedDescription)
                    return
                
                //Logged!
            
         else 
            Alert.sharedInstance.showAlert("Error", message: error!.localizedDescription)
        
    

这项工作无需向 Twitter 提出请求。 Firebase 控制台中的 API Key 和 API Secret 从 dev.twitter 获取。

【讨论】:

我仍然无法打印出电子邮件地址。我需要做些什么才能收到电子邮件吗?

以上是关于从 Twitter 请求用户的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Twitter 用户查找请求错误混淆

我们可以从 Twitter oauth API 获取电子邮件 ID 吗?

从 Twitter API 获取用户的电子邮件以进行外部登录身份验证 ASP.NET MVC C#

如何从 MSN、Twitter、Facebook、GMail 等中检索联系人/电子邮件?

如何通过iOS中的Twitter API获取用户电子邮件地址?

如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?