как запросить разрешение на получение электронной почты пользователя с помощью twitter kit версии 1.2.0 в ios8?

Я интегрировал набор для твиттера в свое приложение для iOS, следуя https://dev.twitter.com/twitter-kit/ios/configure это. Я мог войти в систему после аутентификации и легко увидеть свое имя в Твиттере, но теперь я хочу получить свой адрес электронной почты, поэтому я использовал TWTRShareEmailViewController, который предоставляет пользователю общий вид электронной почты, который возвращает ноль. Я просмотрел документы, где они упомянули о том, что мое приложение должно быть внесено в белый список для запроса разрешения по электронной почте, и сказали заполнить эту форму https://support.twitter.com/forms/platform не понимаю, что делать дальше? как точно получить разрешение электронной почты пользователя? Предложите любую помощь. Заранее спасибо.


person Mak13    schedule 27.01.2015    source источник


Ответы (5)


Я также не нашел конкретной формы, чтобы попросить внести меня в белый список. Я перешел по ссылке их формы https://support.twitter.com/forms/platform и я отметил опцию «У меня есть вопрос политики API, не охваченный этими пунктами». Они ответили через несколько дней и попросили меня получить дополнительную информацию о приложении и его идентификаторе приложения. Я действительно жду их ответа.

РЕДАКТИРОВАТЬ:

Итак, после нескольких (много) писем с [email protected] и нескольких ошибок я, наконец, попал в белый список. Но в настоящее время этот параметр недоступен для Fabric, поэтому вам придется создать приложение Twitter на apps.twitter.com. Просто отправьте письмо с идентификатором вашего приложения или вашими ключами. Они, вероятно, попросят вас дать краткое описание вашего приложения, и попадание в белый список не займет много времени. Удачи!

person Marie Dm    schedule 25.02.2015
comment
После долгих исследований я обнаружил, что твиттер не поддерживает разрешение электронной почты для ios и android, а мы исключили вход в твиттер из нашего приложения и просто использовали facebook и связались, поскольку нашим основным требованием было получать электронную почту любой ценой. Пожалуйста, обновите, если вы обнаружите какой-либо взлом. Благодарность... - person Mak13; 26.02.2015
comment
Сегодня я получил ответ, и они сказали мне, что я задаю свой вопрос не в том месте. Они предложили мне проверить документацию по API (что я уже сделал, конечно) и поискать в их обсуждении разработчиков (что я тоже сделал). Поэтому я думаю, что я не готов попасть в белый список... Когда вы говорите, что они не поддерживают разрешение электронной почты, это также верно, если вы внесены в белый список Twitter? Вы просто не можете спросить об этом вообще? - person Marie Dm; 26.02.2015
comment
@Mak13 Посмотрите на это stackoverflow.com/questions/28679652/ - person ImranNaqvi; 30.10.2015

После разговора с [email protected] мое приложение попало в белый список. Вот история:

  • Отправьте письмо на [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. На вкладке «Разрешения» измените область вашего токена, чтобы запросить электронную почту. Эта опция будет видна только после того, как ваше приложение попадет в белый список.

Пришло время кодировать:

-(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)
    }
}

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

person NSPratik    schedule 27.05.2015
comment
Спасибо за подробные шаги. К сожалению, электронное письмо, которое я отправил на адрес [email protected], было возвращено как недоставленное. Я отправлю свое электронное письмо на [email protected], как предложил другой автор, и, в крайнем случае, пройду через их форму поддержки и надеюсь, что оно попадет в нужное место. - person Jeff Poulton; 07.07.2015
comment
@NSPratik Вышеупомянутый метод недействителен с завтрашнего дня, не могли бы вы помочь мне с новым методом. Проверьте здесь docs.fabric.io/ios/twitter/request- адрес электронной почты пользователя.html - person iPhone 7; 31.05.2016

Отправьте электронное письмо на адрес [email protected], чтобы сначала добавить приложение для входа в Twitter в белый список.

Swift 3.0 Code с тканью

@IBAction func btnTwitterAction(_ sender: AnyObject) {
        Twitter.sharedInstance().logIn { (session, error) in
            if session != nil {
                print("signed in as \(session!.userName)");
                let client = TWTRAPIClient.withCurrentUser()
                let request = client.urlRequest(withMethod: "GET",
                                                url: "https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true",
                                                          parameters: ["include_email": "true", "skip_status": "true"],
                                                          error: nil)
                client.sendTwitterRequest(request) { response, data, connectionError in
                    if (connectionError == nil) {

                        do{
                            let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String:Any]
                            print("Json response: ", json)
                            let firstName = json["name"]
                            let lastName = json["screen_name"]
                            let email = json["email"]
                            print("First name: ",firstName)
                            print("Last name: ",lastName)
                            print("Email: ",email)
                        } catch {

                        }

                    }
                    else {
                        print("Error: \(connectionError)")
                    }
                }


            } else {
                NSLog("Login error: %@", error!.localizedDescription);
            }
        }
    }
person Chanchal Raj    schedule 01.11.2016
comment
В этом коде все работает нормально, кроме получения адреса электронной почты: он возвращает ноль. - person Fadwa_lmh; 24.04.2017
comment
@Fadwa_lmh, вы добавили свое приложение Twitter в белый список, отправив электронное письмо на адрес [email protected]? - person Chanchal Raj; 29.04.2017
comment
@ChanchalRaj, да, мое приложение для твиттера занесено в белый список! - person Fadwa_lmh; 03.05.2017
comment
@Fadwa_lmh, после внесения моего приложения в белый список я смог получить адрес электронной почты. И до сих пор работает нормально. Может, снова к ним обратиться. - person Chanchal Raj; 03.05.2017
comment
@ChanchalRaj, я попробую еще раз, спасибо за помощь. - person Fadwa_lmh; 03.05.2017

Как получить идентификатор электронной почты в твиттере?

Шаг 1. Перейдите на страницу https://apps.twitter.com/app/.

Шаг 2: нажмите на ваше приложение> нажмите на вкладку разрешений.

Шаг 3: здесь проверьте почтовый ящик

введите здесь описание изображения

person Harshil Kotecha    schedule 17.10.2017

Недавно я столкнулся с той же проблемой

Вот что вы должны попробовать, если используете новый набор для твиттера

Go to

  • https://apps.twitter.com/
  • Выберите вкладку разрешений
  • Установите его только для чтения

Код :

Twitter.sharedInstance().logIn(withMethods: [.webBased,.systemAccounts,.all]) {(session, error) -> Void in

        if (session != nil) {
            print("signed in as \(session?.userName)");

            let client = TWTRAPIClient(userID: session?.userName)
            client.loadUser(withID: (session?.userID)!, completion: { (user, error) in

                let twitterClient = TWTRAPIClient.withCurrentUser()
                let request = twitterClient.urlRequest(withMethod: "GET",
                                                url: "https://api.twitter.com/1.1/account/verify_credentials.json",
                                                parameters: ["include_email": "true", "skip_status": "true"],
                                                error: nil)


                twitterClient.sendTwitterRequest(request) { response, data, connectionError in

                    print(data!)

                    let s :String = String(data: data! as Data, encoding: String.Encoding.utf8)!
                    //
                    //            let json = try JSONSerialization.jsonObject(with: responseData as Data, options: JSONSerialization.ReadingOptions.mutableLeaves) as? [String:AnyObject]
                    //

                    Twitter.sharedInstance().sessionStore.logOutUserID((session?.userID)!)

                    if let data = s.data(using: String.Encoding.utf8) {
                        do {
                            let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String:Any]
                            print(json!)

                        } catch {
                            print("Something went wrong")
                        }
                    }
                }
            })

        } else {
   }
person MJ_iOSDev    schedule 09.03.2017