how to request permission to retrieve user's email using twitter kit version 1.2.0 in ios8?

前端 未结 5 1082
遥遥无期
遥遥无期 2020-12-05 20:42

I have integrated twitter kit in my ios app by following https://dev.twitter.com/twitter-kit/ios/configure this. I could sign-in after authentication and see my twitter name

相关标签:
5条回答
  • 2020-12-05 21:16

    I've faced the same issue recently

    Here is what you should try if you are using new twitter kit

    Go to

    • https://apps.twitter.com/
    • Select permissions tab
    • Set it to Read Only

    Code :

    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 {
       }
    
    0 讨论(0)
  • 2020-12-05 21:23

    How to get email id in twitter ?

    Step 1 : got to https://apps.twitter.com/app/

    Step 2 : click on ur app > click on permission tab .

    Step 3 : here check the email box

    0 讨论(0)
  • 2020-12-05 21:24

    Send email to sdk-feedback@twitter.com to whitelist your twitter login app first.

    Swift 3.0 Code with fabric

    @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);
                }
            }
        }
    
    0 讨论(0)
  • 2020-12-05 21:40

    I didn't find a specific form to ask to be whitelisted neither. I went on their form link https://support.twitter.com/forms/platform and I checked the "I have an API policy question not covered by these points" option. They responded a few days after and asked me more information about the application and its app ID. I'm actually waiting for their answer.

    EDIT:

    So after several (a lot) emails with support@fabric.io and a few bugs I finally got whitelisted. But the option is currently unavailable with Fabric so you'll have to create a Twitter app on apps.twitter.com. Just send a mail with your app ID or your keys. They'll probably ask you a quick description of your app and it shouldn't take so much time to be whitelisted. Good luck!

    0 讨论(0)
  • 2020-12-05 21:42

    After having a conversation with sdk-feedback@twitter.com, I got my App whitelisted. Here is the story:

    • Send mail to sdk-feedback@twitter.com with some details about your App like Consumer key, App Store link of an App, Link to privacy policy, Metadata, Instructions on how to log into our App. Mention in mail that you want to access user email address inside your App.

    • They will review your App and reply to you within 2-3 business days.

    • Once they say that your App is whitelisted, update your App's settings in Twitter Developer portal. Sign in to apps.twitter.com and:

      1. On the 'Settings' tab, add a terms of service and privacy policy URL
      2. On the 'Permissions' tab, change your token's scope to request email. This option will only been seen, once your App gets whitelisted.

    It's time to code:

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

    Hope it helps !!!

    0 讨论(0)
提交回复
热议问题