如何在MVC中使用OAuth从Twitter获取姓名,电子邮件,性别等?

时间:2014-05-02 10:17:54

标签: c# oauth

我使用OAuth将我的MVC应用程序与Twitter连接但我似乎无法获取外部数据?目前我正在使用它:

        AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));

        var extraData = result.ExtraData;
        if (result.Provider == "facebook")
        {
            emailadres = extraData["username"];
        }
        else if (result.Provider == "twitter")
        {
            emailadres = extraData["username"];
        }
Facebook确实给了我一封电子邮件,但Twitter似乎没有这样做......

任何解决方案?

4 个答案:

答案 0 :(得分:1)

API不会向您返回电子邮件地址。如果您对用户的电子邮件地址感兴趣,则必须在自己的应用程序中将用户视为完全不同的行为。

答案 1 :(得分:1)

您可以通过查询以下端点获取名称 - GET account/verify_credentials

返回以下回复。但是无法从此回复中获取电子邮件或性别(请参阅Twitter论坛中的这些主题 - No EmailNo Gender)。

{
  "name": "Matt Harris",
  "profile_sidebar_border_color": "C0DEED",
  "profile_background_tile": false,
  "profile_sidebar_fill_color": "DDEEF6",
  "location": "San Francisco",
  "profile_image_url": "http://a1.twimg.com/profile_images/554181350/matt_normal.jpg",
  "created_at": "Sat Feb 17 20:49:54 +0000 2007",
  "profile_link_color": "0084B4",
  "favourites_count": 95,
  "url": "http://themattharris.com",
  "contributors_enabled": false,
  "utc_offset": -28800,
  "id": 777925,
  "profile_use_background_image": true,
  "profile_text_color": "333333",
  "protected": false,
  "followers_count": 1025,
  "lang": "en",
  "verified": false,
  "profile_background_color": "C0DEED",
  "geo_enabled": true,
  "notifications": false,
  "description": "Developer Advocate at Twitter. Also a hacker and British expat who is married to @cindyli and lives in San Francisco.",
  "time_zone": "Tijuana",
  "friends_count": 294,
  "statuses_count": 2924,
  "profile_background_image_url": "http://s.twimg.com/a/1276711174/images/themes/theme1/bg.png",
  "status": {
    "coordinates": {
      "coordinates": [
        -122.40075845,
        37.78264991
      ],
      "type": "Point"
    },
    "favorited": false,
    "created_at": "Tue Jun 22 18:17:48 +0000 2010",
    "truncated": false,
    "text": "Going through and updating @twitterapi documentation",
    "contributors": null,
    "id": 16789004997,
    "geo": {
      "coordinates": [
        37.78264991,
        -122.40075845
      ],
      "type": "Point"
    },
    "in_reply_to_user_id": null,
    "place": null,
    "source": "<a href=\"http://itunes.apple.com/app/twitter/id333903271?mt=8\" rel=\"nofollow\">Twitter for iPhone</a>",
    "in_reply_to_screen_name": null,
    "in_reply_to_status_id": null
  },
  "screen_name": "themattharris",
  "following": false
}

修改 正如Davis在评论中提到的那样,可以通过新的API修改获得email。但我保持这个答案是为了支持问题的完整性。

答案 2 :(得分:0)

不确定gender,但您可以获得usernameemail。 查看有关获取gender的答案herehere

我在iOS App中使用了 Twitter framework 来获取用户详细信息和电子邮件地址。 Twitter为此提供了一个漂亮的框架。

要获取用户电子邮件地址,您的应用应列入白名单。这是link。转到use this form。您可以发送邮件到sdk-feedback@twitter.com,其中包含有关您的应用程序的一些详细信息,如消费者密钥,应用程序的App Store链接,隐私政策链接,元数据,如何登录我们的应用程序的说明等等。他们将在2-3个工作日内回复。

以下是我与Twitter支持团队交谈后如何列入白名单的故事:

  • sdk-feedback@twitter.com发送邮件,其中包含有关您的应用程序的一些详细信息,例如消费者密钥,应用程序的App Store链接,隐私政策链接,元数据,如何登录我们的应用程序的说明。在邮件中提到您要在应用程序内访问用户电子邮件地址。

  • 他们会审核您的应用并在2-3个工作日内回复您。

  • 一旦他们说您的应用已列入白名单,请在Twitter开发人员门户中更新您的应用设置。登录apps.twitter.com并:

    1. 在&#39;设置&#39;选项卡,添加服务条款和隐私政策URL
    2. 关于&#39;权限&#39;选项卡,更改您的令牌范围以请求电子邮件。只有在您的应用程序列入白名单后,才会看到此选项。

希望它有所帮助!!!

答案 3 :(得分:0)

请求用户的电子邮件地址要求您的应用程序被Twitter列入白名单。要请求访问用户电子邮件地址,请转到此处https://support.twitter.com/forms/platform

一旦列入白名单,就会在apps.twitter.com上的应用权限下显示“向用户请求电子邮件地址”复选框。隐私政策URL和服务条款URL字段也将在电子邮件访问所需的设置下提供。如果启用,将通过oauth / authorize对话框通知用户您的应用可以访问其电子邮件地址。