Skip to content

Commit

Permalink
Get Logged-In User's Email ID from Twitter Account
Browse files Browse the repository at this point in the history
RestTemplate and JSON to POJO Method - Converted JSON returned from https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true to POJO.
  • Loading branch information
RawSanj committed Apr 17, 2016
1 parent e3d2bf8 commit 920260e
Show file tree
Hide file tree
Showing 8 changed files with 1,211 additions and 6 deletions.
6 changes: 0 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,6 @@
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-twitter</artifactId>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160212</version>
</dependency>

</dependencies>

<properties>
Expand Down
58 changes: 58 additions & 0 deletions src/main/java/com/rawsanj/tweet/controller/UserInfoController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.rawsanj.tweet.controller;

import javax.inject.Inject;

import org.springframework.social.connect.Connection;
import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.connect.UserProfile;
import org.springframework.social.twitter.api.CursoredList;
import org.springframework.social.twitter.api.Twitter;
import org.springframework.social.twitter.api.TwitterProfile;
import org.springframework.social.twitter.api.impl.TwitterTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.client.RestTemplate;

import com.rawsanj.tweet.util.TwitterProfileWithEmail;

@Controller
@RequestMapping("/userinfo")
public class UserInfoController {

private Twitter twitter;

private ConnectionRepository connectionRepository;

private TwitterTemplate twitterTemplate;

@Inject
public UserInfoController(Twitter twitter, ConnectionRepository connectionRepository, TwitterTemplate twitterTemplate) {
this.twitter = twitter;
this.connectionRepository = connectionRepository;
this.twitterTemplate = twitterTemplate;

This comment has been minimized.

Copy link
@keyuls

keyuls Jun 27, 2018

How did you get a value of twitterTemplate?

This comment has been minimized.

Copy link
@RawSanj

RawSanj Jun 28, 2018

Author Owner

It gets injected by Spring configured by Spring Boot. See application.properties file for configuring TwitterTemplate.

}

@RequestMapping(method=RequestMethod.GET)
public String helloTwitter(Model model) {
if (connectionRepository.findPrimaryConnection(Twitter.class) == null) {
return "redirect:/connect/twitter";
}

Connection<Twitter> con = connectionRepository.findPrimaryConnection(Twitter.class);
//ConnectionKey key = con.getKey();
UserProfile userProfile = con.fetchUserProfile();
System.out.println("Email address of Logged In User: "+ userProfile.getEmail());
System.out.println("Name of Logged In User: "+ userProfile.getFirstName() + " " + userProfile.getLastName());

RestTemplate restTemplate = twitterTemplate.getRestTemplate();

TwitterProfileWithEmail response = restTemplate.getForObject("https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true", TwitterProfileWithEmail.class);
System.out.println("Name: "+ response.getName()+ " Email: "+ response.getEmail());

model.addAttribute("accountInfo", response);
return "hello";
}

}
58 changes: 58 additions & 0 deletions src/main/java/com/rawsanj/tweet/util/Description.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@

package com.rawsanj.tweet.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"urls"
})
public class Description {

@JsonProperty("urls")
private List<Object> urls = new ArrayList<Object>();
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

/**
*
* @return
* The urls
*/
@JsonProperty("urls")
public List<Object> getUrls() {
return urls;
}

/**
*
* @param urls
* The urls
*/
@JsonProperty("urls")
public void setUrls(List<Object> urls) {
this.urls = urls;
}

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}
56 changes: 56 additions & 0 deletions src/main/java/com/rawsanj/tweet/util/Entities.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@

package com.rawsanj.tweet.util;

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"description"
})
public class Entities {

@JsonProperty("description")
private Description description;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

/**
*
* @return
* The description
*/
@JsonProperty("description")
public Description getDescription() {
return description;
}

/**
*
* @param description
* The description
*/
@JsonProperty("description")
public void setDescription(Description description) {
this.description = description;
}

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}

0 comments on commit 920260e

Please sign in to comment.