0

私のAndroidテストアプリケーションでは、その後、Gmail APIで設定したGoogle Developer ConsoleからJSONファイルを取得し、それをエミュレーターに配置すると、次のようなIOExceptionが発生します。

"com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden { "code": 403, "errors": [ { "domain": "usageLimits", "message": "Access Not Configured. Google Developers Console を使用してプロジェクトの API を有効にしてください。", "reason" : "accessNotConfigured" } ], "message" : "アクセスが構成されていません。プロジェクトの API を有効にするには、Google Developers Console を使用してください。" }"

GoogleClientSecrets オブジェクトを使用する必要があると思いますが、その用途が見つかりません。

ここにコード:

public class MainActivity extends Activity 
{   
    final String SCOPE = "oauth2:https://www.googleapis.com/auth/gmail.compose";
    final String FILE_NAME = "TestEmail5.json";
    private static final int REQUEST_RESOLVE_ERROR = 1001;

    Button button;

    OnClickListener sendListener = new OnClickListener()
    {

        @Override
        public void onClick(View v) 
        {
            new sendEmailTask().execute();

        }

    };

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button)findViewById(R.id.button1);
        button.setOnClickListener(sendListener);


    }


    public static MimeMessage createEmail(String to, String from, String subject, String bodyText) throws MessagingException 
    {
            Properties props = new Properties();
            Session session = Session.getDefaultInstance(props, null);

            MimeMessage email = new MimeMessage(session);
            InternetAddress tAddress = new InternetAddress(to);
            InternetAddress fAddress = new InternetAddress(from);

            email.setFrom(new InternetAddress(from));
            email.addRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(to));
            email.setSubject(subject);
            email.setText(bodyText);

            return email;
    }


    public static void sendMessage(Gmail service, String userId, MimeMessage email) throws MessagingException, IOException
    {
            Message message = createMessageWithEmail(email);
            message = service.users().messages().send(userId, message).execute();

            System.out.println("Message id: " + message.getId());
            System.out.println(message.toPrettyString());
    }


    public static Message createMessageWithEmail(MimeMessage email) throws MessagingException, IOException 
    {
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            email.writeTo(bytes);
            String encodedEmail = Base64.encodeBase64URLSafeString(bytes.toByteArray());
            Message message = new Message();
            message.setRaw(encodedEmail);
            return message;
    }


    public class sendEmailTask extends AsyncTask
    {

        @Override
        protected Object doInBackground(Object... params)
        {
            HttpTransport httpTransport = new NetHttpTransport();
            JsonFactory jsonFactory = new JacksonFactory();
            String token = "";

            AccountManager accountManager = AccountManager.get(MainActivity.this);
            Account account[] = accountManager.getAccountsByType("com.google");

            String accountName = account[0].name;

            try 
            {
                //GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(jsonFactory,  new java.io.FileReader(Environment.getExternalStorageDirectory().getAbsolutePath() + "//" + "JSON/" + FILE_NAME));


                token = GoogleAuthUtil.getToken(MainActivity.this, accountName, SCOPE);

                GoogleCredential credential = new GoogleCredential().setAccessToken(token);

                Gmail service =  new Gmail.Builder(httpTransport, jsonFactory, credential).setApplicationName("TestEmail5").build();

                MimeMessage mm = createEmail("myemail", "myemail", "soggetto", "oggetto");

                sendMessage(service, "myemail", mm);

            } 
            catch (UserRecoverableAuthException e) 
            {
                startActivityForResult(e.getIntent(), REQUEST_RESOLVE_ERROR);
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            } 
            catch (GoogleAuthException e) 
            {
                e.printStackTrace();
            } 
            catch (MessagingException e)
            {
                e.printStackTrace();
            }


            return null;
        }

    };







}
4

1 に答える 1

1

http://console.developers.google.com/にログインしてプロジェクトを作成し、「Gmail」API を有効にする必要があります。

詳細については、 https ://developers.google.com/gmail/api/quickstart/quickstart-java#step_1_enable_the_gmail_api を ご覧ください。

于 2014-08-17T16:34:18.790 に答える