获取我的Twitter电子邮件

时间:2013-09-17 08:35:56

标签: ios api twitter login social

我正在开发iOs应用程序,我已登录Facebook,LinkedIn,Google +和 Twitter 。 所有这些都让我使用API​​ EXCEPT Twitter从我的个人资料中阅读我的电子邮件。

有没有办法获得我的电子邮件

如果没有,Twitter上是否有“内部电子邮件”,如facebook(someone@facebook.com)中生成的电子邮件?

原因是我使用电子邮件作为数据库中用户的标识符(主键)。

非常感谢你。

2 个答案:

答案 0 :(得分:3)

不,通过Twitter API无法提供电子邮件地址:https://dev.twitter.com/discussions/1737

也没有“内部电子邮件”可用,您必须使用推特用户名并向用户询问电子邮件地址。

答案 1 :(得分:1)

您必须使用 Twitter框架。 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. 在“设置”标签上,添加服务条款和隐私权政策网址
    2. 在“权限”标签上,将令牌的范围更改为请求电子邮件。只有在您的应用程序列入白名单后,才会看到此选项。

将手放在代码上

使用Twitter框架:

获取用户电子邮件地址

-(void)requestUserEmail
    {
        if ([[Twitter sharedInstance] session]) {

            TWTRShareEmailViewController *shareEmailViewController =
            [[TWTRShareEmailViewController alloc]
             initWithCompletion:^(NSString *email, NSError *error) {
                 NSLog(@"Email %@ | Error: %@", email, error);
             }];

            [self presentViewController:shareEmailViewController
                               animated:YES
                             completion:nil];
        } else {
            // Handle user not signed in (e.g. attempt to log in or show an alert)
        }
    }

获取用户个人资料

-(void)usersShow:(NSString *)userID
{
    NSString *statusesShowEndpoint = @"https://api.twitter.com/1.1/users/show.json";
    NSDictionary *params = @{@"user_id": userID};

    NSError *clientError;
    NSURLRequest *request = [[[Twitter sharedInstance] APIClient]
                             URLRequestWithMethod:@"GET"
                             URL:statusesShowEndpoint
                             parameters:params
                             error:&clientError];

    if (request) {
        [[[Twitter sharedInstance] APIClient]
         sendTwitterRequest:request
         completion:^(NSURLResponse *response,
                      NSData *data,
                      NSError *connectionError) {
             if (data) {
                 // handle the response data e.g.
                 NSError *jsonError;
                 NSDictionary *json = [NSJSONSerialization
                                       JSONObjectWithData:data
                                       options:0
                                       error:&jsonError];
                 NSLog(@"%@",[json description]);
             }
             else {
                 NSLog(@"Error code: %ld | Error description: %@", (long)[connectionError code], [connectionError localizedDescription]);
             }
         }];
    }
    else {
        NSLog(@"Error: %@", clientError);
    }
}

希望它有所帮助!!!