"Código": 403, y "razón": excepción "prohibida" al cargar el archivo en google plus

Estoy intentando cargar el archivo de medios en google + y he creado la identificación del cliente en la consola de google. Tengo que subir el formulario del método
Adjuntar medios

autenticación

Al ejecutar la aplicación estoy recibiendo excepción en la línea

Media result = null; try { result = insertRequest.execute(); } catch (IOException e1) { // TODO Auto-generated catch block // e1.printStackTrace(); Log.e("result exception", "" + e1); } 

Excepción son:

  12-09 18:49:20.983: E/result exception(26301):com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden 12-09 18:49:20.983: E/result exception(26301): { 12-09 18:49:20.983: E/result exception(26301): "code" : 403, 12-09 18:49:20.983: E/result exception(26301): "errors" : [ { 12-09 18:49:20.983: E/result exception(26301): "domain" : "global", 12-09 18:49:20.983: E/result exception(26301): "message" : "Forbidden", 12-09 18:49:20.983: E/result exception(26301): "reason" : "forbidden" 12-09 18:49:20.983: E/result exception(26301): } ], 12-09 18:49:20.983: E/result exception(26301): "message" : "Forbidden" 12-09 18:49:20.983: E/result exception(26301): } 

Y mi código es golpe:

  public class MainActivity extends Activity { public static final String CLIENT_ID = "***********************************"; public static final String CLIENT_SECRET = "******************************"; String REDIRECT_URI = "http://localhost"; // String REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob"; JsonFactory jsonFactory = new JacksonFactory(); String posturl ="https://www.googleapis.com/upload/plusDomains/v1/people/userId/media/collection"; HttpTransport transport = new NetHttpTransport(); GoogleTokenResponse tokenResponse; @SuppressLint({ "NewApi", "SetJavaScriptEnabled" }) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); WebView webview = new WebView(this); webview.setVisibility(View.VISIBLE); webview.getSettings().setJavaScriptEnabled(true); setContentView(webview); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() .permitAll().build(); StrictMode.setThreadPolicy(policy); Collection<String> SCOPE = Arrays.asList( "https://www.googleapis.com/auth/plus.me", "https://www.googleapis.com/auth/plus.media.upload", "https://www.googleapis.com/auth/plus.stream.write"); // "https://www.googleapis.com/auth/plus.profiles.read"); final GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( transport, jsonFactory, CLIENT_ID, CLIENT_SECRET, SCOPE).setApprovalPrompt("force") .setAccessType("offline").build(); String url = flow.newAuthorizationUrl().setRedirectUri(REDIRECT_URI) .build(); System.out.println("url: " + url); webview.loadUrl(url); webview.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { if (url.startsWith(REDIRECT_URI)) { if (url.indexOf("code=") != -1) { // Url is like http://localhost/?code=4/Z5DgC1IxNL-muPsrE2Sjy9zQn2pF String code = url.substring(REDIRECT_URI.length() + 7, url.length()); System.out.println("code: " + code); tokenResponse = null; try { tokenResponse = flow.newTokenRequest(code) .setRedirectUri(REDIRECT_URI).execute(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } GoogleCredential credential = new GoogleCredential.Builder() .setTransport(transport) .setJsonFactory(jsonFactory) .setClientSecrets(CLIENT_ID, CLIENT_SECRET) .addRefreshListener( new CredentialRefreshListener() { @Override public void onTokenResponse( Credential credential, TokenResponse tokenResponse) { System.out .println("Credential was refreshed successfully."); } @Override public void onTokenErrorResponse( Credential credential, TokenErrorResponse tokenErrorResponse) { System.err .println("Credential was not refreshed successfully. " + "Redirect to error page or login screen."); } }).build(); credential.setFromTokenResponse(tokenResponse); PlusDomains plusDomains = new PlusDomains.Builder( transport, jsonFactory, credential).setApplicationName("RiskScore").build(); String userId = "me"; // Requires the plus.me scope File jpegFile = null; jpegFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/RiskScore/20131205115454.jpg"); Media mediaDescription = new Media(); mediaDescription.setDisplayName("A picture of Score"); Insert insertRequest = null; try { insertRequest = plusDomains.media().insert(userId, "cloud", mediaDescription, new FileContent("image/jpeg", jpegFile)); } catch (IOException e1) { // TODO Auto-generated catch block // e1.printStackTrace(); Log.e("insertRequest exception", "" + e1); } Media result = null; try { result = insertRequest.execute(); } catch (IOException e1) { // TODO Auto-generated catch block // e1.printStackTrace(); Log.e("result exception", "" + e1); } if (result != null) { String mediaId = result.getId(); // Now create a post using the uploaded image // Create the activity and populate the contents com.google.api.services.plusDomains.model.Activity activity = new com.google.api.services.plusDomains.model.Activity(); activity.setObject(new PlusDomainsObject()); activity.getObject().setContent("Risk Project...."); // Attach the photo PlusDomainsObject.Attachments attachment = new PlusDomainsObject.Attachments(); attachment.setObjectType("photo"); attachment.setId(mediaId); ArrayList<Attachments> attachments = new ArrayList<PlusDomainsObject.Attachments>(); attachments.add(attachment); // You can also add multiple attachments to the post activity.getObject().setAttachments(attachments); // Set the activity to be visible only to your domain PlusDomainsAclentryResource acl = new PlusDomainsAclentryResource(); acl.setType("domain"); Acl aclEntries = new Acl(); aclEntries .setItems(new ArrayList<PlusDomainsAclentryResource>()); aclEntries.getItems().add(acl); aclEntries.setDomainRestricted(true); // Required, this does the domain restriction activity.setAccess(aclEntries); // Post the activity com.google.api.services.plusDomains.model.Activity newActivity = null; try { newActivity = plusDomains.activities() .insert(userId, activity).execute(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("New activity created with ID " + newActivity.getId()); System.out.println("URL: " + newActivity.getUrl()); view.setVisibility(View.INVISIBLE); } } else if (url.indexOf("error=") != -1) { view.setVisibility(View.INVISIBLE); } } } }); } 

}

Para utilizar la API de dominios de Google+, debe asegurarse de que el dominio para el usuario que está actuando en nombre de se ha configurado con los permisos adecuados para su aplicación. Estas instrucciones se encuentran en la sección "Delegar autoridad de todo el dominio a su cuenta de servicio" del Paso 1 de la guía de inicio rápido .

Específicamente, debe asociar el ID de cliente de su aplicación con los ámbitos que su aplicación utilizará en el panel de control del dominio. El administrador del dominio es la única persona que puede hacer esto, por lo que si está trabajando con otro dominio, asegúrese de ponerse en contacto con esa persona. Además, los ámbitos listados en el panel de control deben coincidir EXACTAMENTE con los ámbitos solicitados en la aplicación.

Creo que este código es para el lado del servidor de carga y Y estoy tratando de subir archivos a través de teléfono Android para que se muestra la excepción. Con estas preguntas 1 y 2, encontré que Google+ no tiene una API de escritura independiente disponible para los desarrolladores generales, la única forma de publicar en Google+ a través de una aplicación.

Note : Pero si alguien sabe acerca de Google + escribir API para los desarrolladores en general, por favor, ayúdame.

  • Inicio de sesión de Android con Google Plus en el primer inicio de sesión
  • Android Google Plus getCurrentPerson devuelve null
  • Parar de trabajar
  • ¿Qué significa RC_SIGN_IN en googleplus login?
  • ¿Cómo integrar Google Plus y Facebook Authentication juntos en la misma actividad del proyecto Android?
  • Recuperar correo electrónico de la cuenta de Google Plus en la aplicación para Android
  • Google Sign-in siempre falla en GoogleSignInResult
  • Integración de Facebook, Twitter y Google+ en la aplicación de Android mediante PhoneGap
  • Integración de Google Plus en la aplicación Android
  • Android Google+ no puede obtener el código de autorización
  • No se puede cancelar el botón de inicio de sesión de Google+
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.