Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Gmail API 403权限不足域全局 @覆盖 受保护列表doInBackground(Void…params) { 尝试 { //下面这一行是权限不足错误的原因 ListMessagesResponse messagesWithLabels=mService.users().messages().list(“me”).setQ(“标签:收件箱”).execute(); /*对于(消息m:messagesWithLabels.getMessages()) { if(m.size()>MAXSIZE) { List headers=m.getPayload().getHeaders(); for(MessagePartHeader头:头) { if(header.getName().equals(“From”)|| header.getName().equals(“日期”) ||header.getName().equals(“Subject”)| | header.getName().equals(“To”) ||header.getName().equals(“CC”)){ put(header.getName().toLowerCase(),header.getValue()); } } messageDetails.put(“snippet”,m.getSnippet()); messageDetails.put(“threadId”,m.getThreadId()); messageDetails.put(“id”,m.getId()); messageDetails.put(“body”,m.getPayload().getBody().getData()); deleteThread(mService,“me”,m.getId()); messageDetails.clear(); } }*/ 返回getDataFromApi(); } 捕获(例外e) { mLastError=e; 取消(真); 返回null; } }_Android_Google Oauth_Gmail Api_Google Api Java Client - Fatal编程技术网

Android Gmail API 403权限不足域全局 @覆盖 受保护列表doInBackground(Void…params) { 尝试 { //下面这一行是权限不足错误的原因 ListMessagesResponse messagesWithLabels=mService.users().messages().list(“me”).setQ(“标签:收件箱”).execute(); /*对于(消息m:messagesWithLabels.getMessages()) { if(m.size()>MAXSIZE) { List headers=m.getPayload().getHeaders(); for(MessagePartHeader头:头) { if(header.getName().equals(“From”)|| header.getName().equals(“日期”) ||header.getName().equals(“Subject”)| | header.getName().equals(“To”) ||header.getName().equals(“CC”)){ put(header.getName().toLowerCase(),header.getValue()); } } messageDetails.put(“snippet”,m.getSnippet()); messageDetails.put(“threadId”,m.getThreadId()); messageDetails.put(“id”,m.getId()); messageDetails.put(“body”,m.getPayload().getBody().getData()); deleteThread(mService,“me”,m.getId()); messageDetails.clear(); } }*/ 返回getDataFromApi(); } 捕获(例外e) { mLastError=e; 取消(真); 返回null; } }

Android Gmail API 403权限不足域全局 @覆盖 受保护列表doInBackground(Void…params) { 尝试 { //下面这一行是权限不足错误的原因 ListMessagesResponse messagesWithLabels=mService.users().messages().list(“me”).setQ(“标签:收件箱”).execute(); /*对于(消息m:messagesWithLabels.getMessages()) { if(m.size()>MAXSIZE) { List headers=m.getPayload().getHeaders(); for(MessagePartHeader头:头) { if(header.getName().equals(“From”)|| header.getName().equals(“日期”) ||header.getName().equals(“Subject”)| | header.getName().equals(“To”) ||header.getName().equals(“CC”)){ put(header.getName().toLowerCase(),header.getValue()); } } messageDetails.put(“snippet”,m.getSnippet()); messageDetails.put(“threadId”,m.getThreadId()); messageDetails.put(“id”,m.getId()); messageDetails.put(“body”,m.getPayload().getBody().getData()); deleteThread(mService,“me”,m.getId()); messageDetails.clear(); } }*/ 返回getDataFromApi(); } 捕获(例外e) { mLastError=e; 取消(真); 返回null; } },android,google-oauth,gmail-api,google-api-java-client,Android,Google Oauth,Gmail Api,Google Api Java Client,我已经标记了导致402权限不足的行域:全局错误。如果我注释掉所说的行,程序将返回标签并将其打印到屏幕上,而不会出现权限错误。我已经签署了我的发行版apk并设置了GooglePlay开发者控制台。应用程序的签名很好,它是SHA1,我遵循了检索凭据的示例应用程序 权限不足怎么办 多谢各位 mservice的创建: @Override protected List< String > doInBackground( Void... para

我已经标记了导致402权限不足的行域:全局错误。如果我注释掉所说的行,程序将返回标签并将其打印到屏幕上,而不会出现权限错误。我已经签署了我的发行版apk并设置了GooglePlay开发者控制台。应用程序的签名很好,它是SHA1,我遵循了检索凭据的示例应用程序

权限不足怎么办

多谢各位

mservice的创建:

            @Override
            protected List< String > doInBackground( Void... params ) 
            {
                try 
                {
                    //This line below is the cause of the insufficient permissions error
                    ListMessagesResponse messagesWithLabels = mService.users().messages().list("me").setQ("label:inbox").execute();

                    /*for( Message m : messagesWithLabels.getMessages( ) )
                    {
                        if( m.size( ) > MAXSIZE )
                        {
                            List<MessagePartHeader> headers = m.getPayload( ).getHeaders( );

                            for ( MessagePartHeader header : headers )
                            {
                                if ( header.getName( ).equals("From") || header.getName().equals("Date")
                                        || header.getName().equals("Subject") || header.getName().equals("To")
                                        || header.getName().equals("CC")) {
                                    messageDetails.put( header.getName( ).toLowerCase( ), header.getValue( ) );
                                }
                            }

                            messageDetails.put("snippet", m.getSnippet());
                            messageDetails.put("threadId", m.getThreadId());
                            messageDetails.put("id", m.getId());
                            messageDetails.put("body",m.getPayload().getBody().getData());

                            GmailFunctions.deleteThread( mService, "me", m.getId( ) );

                            messageDetails.clear( );
                        }
                    }*/

                    return getDataFromApi( );
                } 
                catch ( Exception e ) 
                {
                    mLastError = e;

                    cancel( true );

                    return null;
                }
            }
私有类MakeRequestTask扩展了AsyncTask>{
private com.google.api.services.gmail.gmail mService=null;
私有异常mLastError=null;
ArrayList sRemovalIds=新的ArrayList();
Listinserts=newarraylist();
Map messageDetails=newhashmap();
公共MakeRequestTask(GoogleAccountCredential凭证)
{
HttpTransport=AndroidHttp.newCompatibleTransport();
JsonFactory=JacksonFactory.getDefaultInstance();
mService=new com.google.api.services.gmail.gmail.Builder(
运输、jsonFactory、凭证)
.setApplicationName(“Gmail API Android快速启动”)
.build();
}
@凌驾
受保护列表doInBackground(Void…params)
{
尝试
{
ListMessagesResponse messagesWithLabels=mService.users().messages().list(“me”).setQ(“标签:收件箱”).execute();
/*对于(消息m:messagesWithLabels.getMessages())
{
if(m.size()>MAXSIZE)

使用这些作用域而不是仅使用GMAIL_标签的默认作用域对我有效。

更改权限后,您可能还需要删除以前的凭据文件。这通常在$HOME/.credentials/

中。更改权限后,您可能还需要删除以前的凭据文件。它是当前文件夹中的token.json。

除了设置@Eae提到的作用域之外,删除StoredCredential文件,文件路径是您的_项目/tokens/StoredCredential。

您能展示一下您实例化
mService
的代码吗?您的权限问题可能就在这里。这是示例中的锅炉板。我添加了那个片段。谢谢您的询问。我没有er使用了Java客户端库,所以我恐怕不知道。在其他人回答之前,您可以通过常规的
http请求来尝试您的请求,并尝试找出您需要的Gmail API权限范围。我相信,根据本文评论中返回的信息,我已经在这方面取得了进展。我对此进行了解释n Gmail API的文档。在快速入门应用程序的顶部,您将发现声明的作用域字符串列表,如果您现在扩展作用域,代码将在没有权限错误的情况下运行。
                   private class MakeRequestTask extends AsyncTask< Void, Void, List< String > > {


                    private com.google.api.services.gmail.Gmail mService = null;

                    private Exception mLastError = null;

                    ArrayList<String> sRemovalIds = new ArrayList<String>( );

                    List< String > inserts = new ArrayList< String >( );

                    Map<String, Object> messageDetails = new HashMap<String, Object>( );

                    public MakeRequestTask( GoogleAccountCredential credential ) 
                    {
                        HttpTransport transport = AndroidHttp.newCompatibleTransport( );

                        JsonFactory jsonFactory = JacksonFactory.getDefaultInstance( );

                        mService = new com.google.api.services.gmail.Gmail.Builder(
                                transport, jsonFactory, credential )
                                .setApplicationName( "Gmail API Android Quickstart" )
                                .build( );
                    }

                    @Override
                    protected List< String > doInBackground( Void... params ) 
                    {
                        try 
                        {
                            ListMessagesResponse messagesWithLabels = mService.users().messages().list("me").setQ("label:inbox").execute();

                            /*for( Message m : messagesWithLabels.getMessages( ) )
                            {
                                if( m.size( ) > MAXSIZE )
    private static final String[ ] SCOPES = { GmailScopes.GMAIL_LABELS, GmailScopes.GMAIL_COMPOSE,
GmailScopes.GMAIL_INSERT, GmailScopes.GMAIL_MODIFY, GmailScopes.GMAIL_READONLY, GmailScopes.MAIL_GOOGLE_COM };