我正在开发一个iOS应用程序,我已经登录了Facebook,LinkedIn,Google+和Twitter。他们都允许我使用API从我的个人资料中阅读我的电子邮件,除了Twitter。
有什么方法可以获取我的电子邮件吗?
如果没有,Twitter中是否有"内部电子邮件",像facebook(someone@facebook.com)中生成的电子邮件?
原因是我使用电子邮件作为数据库中用户的标识符(主键)。
不,电子邮件地址无法通过 Twitter API 获得:https://dev.twitter.com/discussions/1737
也没有任何可用的"内部电子邮件",您将不得不使用Twitter用户名并询问用户那里的电子邮件地址。
你将不得不使用Twitter框架。Twitter为此提供了一个漂亮的框架,您只需将其集成到您的应用程序中即可。
要获取用户电子邮件地址,您的应用程序应被列入白名单。这是链接。转到使用此表单。您可以向 sdk-feedback@twitter.com 发送邮件,其中包含有关您的应用程序的一些详细信息,例如消费者密钥,应用程序的App Store链接,隐私政策链接,元数据,有关如何登录我们应用程序的说明等。他们将在2-3个工作日内回复。
以下是我如何通过与Twitter支持团队的对话被列入白名单的故事:
-
向
sdk-feedback@twitter.com
发送邮件,其中包含有关您的应用程序的一些详细信息,例如消费者密钥,应用程序的App Store链接,隐私政策链接,元数据,有关如何登录我们应用程序的说明。 -
他们将审核您的应用程序并在 2-3 个工作日内回复您。
-
一旦他们说你的应用已列入白名单,请在 Twitter 开发者门户中更新你的应用的设置。登录以 apps.twitter.com 并:
- 在"设置"标签上,添加服务条款和隐私权政策网址
- 在"权限"标签上,更改令牌的范围以请求电子邮件。只有在您的应用程序被列入白名单后,此选项才会被看到。
把你的手放在代码上
推特框架的使用:
获取用户电子邮件地址
-(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);
}
}
希望对!!有所帮助