当我尝试通过Google进行身份验证时,它会在身份验证过程中引发异常(检查服务名称)。
我使用Google Java SDK进行身份验证。
SpreadsheetService service = new SpreadsheetService("Print Google Spreadsheet Demo"); //this is my application name that i created in developer console
service.setUserCredentials(MY_GOOGLE_EMAIL_ADDRESS, GOOGLE_ACCOUNT_PASSWORD);
// Load sheet
URL metafeedUrl = new URL(SPREADSHEET_URL);
SpreadsheetEntry spreadsheet = service.getEntry(metafeedUrl, SpreadsheetEntry.class);
URL listFeedUrl = ((WorksheetEntry) spreadsheet.getWorksheets().get(0)).getListFeedUrl();
// Print entries
ListFeed feed = (ListFeed) service.getFeed(listFeedUrl, ListFeed.class);
Run Code Online (Sandbox Code Playgroud)
该setUserCredentials()方法中引发了异常。
例外:
com.google.gdata.util.AuthenticationException: Error authenticating (check service name)
at com.google.gdata.client.GoogleAuthTokenFactory.getAuthException(GoogleAuthTokenFactory.java:628)
at com.google.gdata.client.GoogleAuthTokenFactory.getAuthToken(GoogleAuthTokenFactory.java:500)
at com.google.gdata.client.GoogleAuthTokenFactory.setUserCredentials(GoogleAuthTokenFactory.java:346)
at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:362)
at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:317)
at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:301)
Run Code Online (Sandbox Code Playgroud)
在访问Google电子表格之前,我是否缺少任何配置?
我为休息控制器配置了弹簧启动.我创建了很多api,但我需要在每个api中验证我的令牌信息,用户是否被授权或不基于提供的令牌.
在登录期间,我正在生成每个api中所需的令牌,用于访问信息.如果令牌无效,那么我需要返回消息Sorry, your provided token information has been expired or not exists.
下面是我的api.
@RequestMapping(value="/delete", method= RequestMethod.DELETE)
public Map<String, Object> delete(@RequestBody String reqData,HttpServletRequest request) {
Map<String, Object> m1 = new HashMap<String,Object>();
JSONObject jsonData = new JSONObject(reqData);
Token token= tokenDao.getByTokenCode(jsonData.getString("token"));
if(token==null){
m1.put("status", "error");
m1.put("message", "Sorry, your provided token information expired or not exists.");
return m1;
}
//here my logic to remove user from database.
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在服务方法或使用注释中检查令牌功能,所以我需要在每个api中删除相同的代码,并需要使用一个通用功能.
我阅读了很多博客和教程,但我没有在dropwizard Web服务中找到删除操作.
这是我的代码:
public class PersonDAO extends AbstractDAO<Person> {
public PersonDAO(SessionFactory factory) {
super(factory);
}
public Optional<Person> findById(Long id) {
return Optional.fromNullable(get(id));
}
public Person create(Person person) {
return persist(person);
}
public List<Person> findAll() {
return list(namedQuery("com.example.helloworld.core.Person.findAll"));
}
//here i want to create delete method
}
Run Code Online (Sandbox Code Playgroud)
这是我的服务文件:
@Path("/people")
@Produces(MediaType.APPLICATION_JSON)
public class PeopleResource {
private final PersonDAO peopleDAO;
public PeopleResource(PersonDAO peopleDAO) {
this.peopleDAO = peopleDAO;
}
@POST
@UnitOfWork
public Person createPerson(Person person) {
return peopleDAO.create(person);
}
@GET
@UnitOfWork
public List<Person> listPeople() …Run Code Online (Sandbox Code Playgroud)