Не удалось получить электронную почту пользователя из твиттера с помощью платформы iOS для твиттера

Я пробую свои силы в создании нового тканевого твиттер-кита для iOS. После входа в систему мы можем попросить пользователя разрешить доступ для идентификатора электронной почты, и если он разрешает, то возвращает адрес электронной почты вошедшего в систему пользователя, но это дает мне ошибку.

Email (null), Error: Error Domain=NSURLErrorDomain Code=-1001 
"The request timed out." UserInfo=0x7fdd314f1c30 
{NSUnderlyingError=0x7fdd314d9aa0 "The request timed out.", 
NSErrorFailingURLStringKey=https://api.twitter.com/1.1/account/verify_cre
dentials.json?skip_status=true&include_email=true, 
NSErrorFailingURLKey=https://api.twitter.com/1.1/account/verify_credentia
ls.json?skip_status=true&include_email=true, 
NSLocalizedDescription=The request timed out.}

И вот мой код, который я пробовал из их документа.

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 {
    // TODO: Handle user not signed in (e.g.
    // attempt to log in or show an alert)
}

Что-то не так в моем коде? Помогите пожалуйста мне. Я могу опубликовать свой статус и медиафайлы в Twitter, но не могу получить идентификатор электронной почты.

Может ли кто-нибудь помочь мне в этой проблеме? Я тоже новичок в разработке.


person Nij    schedule 10.07.2015    source источник
comment
Ваше приложение занесено в белый список Twitter   -  person Tuğrul Özdemir    schedule 10.07.2015
comment
Я не понял, что они подразумевают под белым списком, и я так не думаю.   -  person Nij    schedule 10.07.2015
comment
Ознакомьтесь с этим сообщением stackoverflow.com/a/30477261/4395879.   -  person Tuğrul Özdemir    schedule 11.07.2015
comment
@TuğrulÖzdemir Спасибо   -  person Nij    schedule 13.07.2015


Ответы (1)


Чтобы получить адрес электронной почты пользователя, ваше приложение должно быть внесено в белый список. Вот ссылка. Перейдите на страницу использовать эту форму. Вы можете отправить письмо по адресу [email protected] с некоторыми подробностями о вашем приложении, такими как потребительский ключ, ссылка на приложение в App Store, ссылка на политику конфиденциальности, метаданные, инструкции о том, как войти в наше приложение и т. д. Они будут ответ в течение 2-3 рабочих дней.

Вот история того, как я попал в белый список после разговора со службой поддержки Twitter:

  • Отправьте письмо на [email protected] с некоторыми подробностями о вашем приложении, такими как потребительский ключ, ссылка на приложение в App Store, ссылка на политику конфиденциальности, метаданные, инструкции о том, как войти в наше приложение. Упомяните в почте, что вы хотите получить доступ к адресу электронной почты пользователя внутри вашего приложения.

  • Они рассмотрят ваше приложение и ответят вам в течение 2-3 рабочих дней.

  • Как только они скажут, что ваше приложение добавлено в белый список, обновите настройки своего приложения на портале разработчиков Twitter. Войдите на сайт apps.twitter.com и:

    1. On the 'Settings' tab, add a terms of service and privacy policy URL
    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);
    }
}

Надеюсь, поможет !!!

person NSPratik    schedule 02.10.2015