Я пытался создать автоматическую запись в Google плюс из моей собственной CMS. Я пробовал API домена Google Plus. Но я всегда получаю Forbidden log, хотя я поместил правильную область видимости, и я установил это разрешение на моем Credential.Создать новое сообщение через google plus Domain API
Вот мой код
@RequestMapping(value = { "/callback" }, method = RequestMethod.GET)
public String gplusCallback (
@RequestParam(value = "code", required = false) String code,
WebRequest webRequest,
HttpServletRequest request,
HttpServletResponse response,
HttpSession session) throws GeneralSecurityException, IOException {
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
new NetHttpTransport(),
new JacksonFactory(),
CLIENT_ID,
CLIENT_SECRET,
SCOPE)
.setApprovalPrompt("force")
.setAccessType("offline").build();
System.out.println("Codenya " + code);
GoogleTokenResponse tokenResponse = flow.newTokenRequest(code)
.setRedirectUri(REDIRECT_URI).execute();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(new NetHttpTransport())
.setJsonFactory(new JacksonFactory())
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(SCOPE)
.setServiceAccountUser(USER_EMAIL)
.setServiceAccountPrivateKeyFromP12File(
new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
.build();
Plus service = new Plus.Builder(new NetHttpTransport(), new JacksonFactory(), credential)
.setApplicationName("GNEWS.ID")
.build();
com.google.api.services.plus.model.Person mePerson = service.people().get("me").execute();
System.out.println("ID:\t" + mePerson.getId());
System.out.println("Display Name:\t" + mePerson.getDisplayName());
System.out.println("Image URL:\t" + mePerson.getImage().getUrl());
System.out.println("Profile URL:\t" + mePerson.getUrl());
try {
PlusDomains plusDomains = new PlusDomains.Builder(new NetHttpTransport(), new JacksonFactory(), credential)
.setApplicationName("GNEWS.ID")
.build();
com.google.api.services.plusDomains.model.Person me = plusDomains.people().get(mePerson.getId()).execute();
System.out.println("ID:\t" + me.getId());
System.out.println("Profile URL:\t" + me.getUrl());
}catch (IOException e) {
e.printStackTrace();
}
System.out.println("G+ has been connected!");
return "redirect:/cms/connection";
}
А вот журнал
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden {
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Forbidden",
"reason" : "forbidden"
} ],
"message" : "Forbidden"
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
at io.gnews.cms.controller.GplusController.gplusCallback(GplusController.java:140)
Я прочитал this, this и this. Но их дело находится на странице google Plus, тогда как мой - обычный пользователь. Вы не знаете, где я ошибся?
Если адрес электронной почты аккаунта Google заканчивается на 'gmail.com', это не сработает. API Доменов работает только с учетными записями https://apps.google.com/, которые используют пользовательские домены. – abraham
Как вы думаете, он будет работать, если я использую его для Google+ страницы? @abraham? – Kelimutu
Ох, неважно. Теперь я знаю, что Google использует другой API для google plus page. – Kelimutu