com.parse.ParseRequest $ ParseRequestException:未经授权

时间:2016-08-02 12:48:05

标签: java android android-studio parse-platform back4app

我是android新手。好吧,我正在尝试发送数据来解析云,但我得到了这个例外。

com.parse.ParseRequest$ParseRequestException: unauthorized

以下是MainActivity类。

/*
 * Copyright (c) 2015-present, Parse, LLC.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */
package com.parse.starter;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import com.parse.ParseAnalytics;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.SaveCallback;


public class MainActivity extends AppCompatActivity {

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

      ParseObject score = new ParseObject("Score");
      score.put("username","azeem");
      score.put("score","199");
      score.saveInBackground(new SaveCallback() {
          @Override
          public void done(ParseException e) {
              if (e == null)
              {
                  Log.i("SaveInBackground","Succesfully");
              }
              else {
                  Log.i("SaveInBackground","Failed");
                  e.printStackTrace();
              }
          }
      });

      ParseAnalytics.trackAppOpenedInBackground(getIntent());

  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
      return true;
    }

    return super.onOptionsItemSelected(item);
  }
}

这是logcat。

08-02 16:03:14.278 2542-2542/com.parse.starter I/art: Not late-enabling -Xcheck:jni (already on)
08-02 16:03:14.356 2542-2542/com.parse.starter W/System: ClassLoader referenced unknown path: /data/app/com.parse.starter-2/lib/x86
08-02 16:03:20.832 2542-2542/com.parse.starter W/System: ClassLoader referenced unknown path: /data/app/com.parse.starter-2/lib/x86
08-02 16:03:21.431 2542-2548/com.parse.starter W/art: Suspending all threads took: 80.123ms
08-02 16:03:22.473 2542-2548/com.parse.starter W/art: Suspending all threads took: 120.266ms
08-02 16:03:22.642 2542-2552/com.parse.starter I/art: Background sticky concurrent mark sweep GC freed 16012(1690KB) AllocSpace objects, 8(164KB) LOS objects, 69% free, 1121KB/3MB, paused 823us total 115.234ms
08-02 16:03:25.669 2542-2548/com.parse.starter W/art: Suspending all threads took: 2.314s
08-02 16:03:26.291 2542-2548/com.parse.starter W/art: Suspending all threads took: 431.859ms
08-02 16:03:26.369 2542-2548/com.parse.starter W/art: Suspending all threads took: 9.786ms
08-02 16:03:26.814 2542-2992/com.parse.starter D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true

                                                                 [ 08-02 16:03:26.823  2542: 2542 D/         ]
                                                                 HostConnection::get() New Host Connection established 0xaa1a8560, tid 2542
08-02 16:03:26.875 2542-2548/com.parse.starter W/art: Suspending all threads took: 14.603ms
08-02 16:03:26.899 2542-2992/com.parse.starter I/OpenGLRenderer: Initialized EGL, version 1.4
08-02 16:03:27.395 2542-2548/com.parse.starter W/art: Suspending all threads took: 34.582ms
08-02 16:03:28.902 2542-2548/com.parse.starter W/art: Suspending all threads took: 536.386ms
08-02 16:19:43.659 2542-2548/com.parse.starter W/art: Suspending all threads took: 7.097ms
08-02 16:19:48.994 2542-2883/com.parse.starter W/System: ClassLoader referenced unknown path: /data/data/com.parse.starter/lib
08-02 16:19:49.119 2542-2992/com.parse.starter E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa9a52620
08-02 16:19:49.313 2542-2992/com.parse.starter V/RenderScript: 0xa0f87000 Launching thread(s), CPUs 2
08-02 16:19:51.063 2542-2992/com.parse.starter E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa9a52690
08-02 16:19:54.880 2542-2542/com.parse.starter W/art: Before Android 4.1, method int android.support.v7.internal.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
08-02 16:19:56.241 2542-2992/com.parse.starter E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa9a52690
08-02 16:20:43.221 2542-2883/com.parse.starter W/System: ClassLoader referenced unknown path: /data/data/com.parse.starter/lib
08-02 16:20:43.259 2542-2992/com.parse.starter E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa9a52620
08-02 16:20:45.238 2542-2992/com.parse.starter E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa9a52620
08-02 16:25:09.700 2542-2992/com.parse.starter E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa9a52ee0
08-02 16:57:48.310 2542-2992/com.parse.starter E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa9a525b0
08-02 16:58:45.961 18271-18271/com.parse.starter W/System: ClassLoader referenced unknown path: /data/app/com.parse.starter-1/lib/x86
08-02 16:58:53.160 18271-18271/com.parse.starter W/System: ClassLoader referenced unknown path: /data/app/com.parse.starter-1/lib/x86
08-02 16:58:53.427 18271-18531/com.parse.starter D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true

                                                                   [ 08-02 16:58:53.431 18271:18271 D/         ]
                                                                   HostConnection::get() New Host Connection established 0xaa1a87d0, tid 18271


                                                                   [ 08-02 16:58:53.496 18271:18531 D/         ]
                                                                   HostConnection::get() New Host Connection established 0xadc47ba0, tid 18531
08-02 16:58:53.501 18271-18531/com.parse.starter I/OpenGLRenderer: Initialized EGL, version 1.4
08-02 17:09:48.803 20084-20084/com.parse.starter W/System: ClassLoader referenced unknown path: /data/app/com.parse.starter-2/lib/x86
08-02 17:09:53.513 20084-20084/com.parse.starter W/System: ClassLoader referenced unknown path: /data/app/com.parse.starter-2/lib/x86
08-02 17:09:53.870 20084-20192/com.parse.starter D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true

                                                                   [ 08-02 17:09:53.875 20084:20084 D/         ]
                                                                   HostConnection::get() New Host Connection established 0xaa1a76f0, tid 20084


                                                                   [ 08-02 17:09:53.913 20084:20192 D/         ]
                                                                   HostConnection::get() New Host Connection established 0xadc47b70, tid 20192
08-02 17:09:53.917 20084-20192/com.parse.starter I/OpenGLRenderer: Initialized EGL, version 1.4
08-02 17:15:47.485 25321-25321/com.parse.starter W/System: ClassLoader referenced unknown path: /data/app/com.parse.starter-2/lib/x86
08-02 17:15:49.386 25321-25321/com.parse.starter W/System: ClassLoader referenced unknown path: /data/app/com.parse.starter-2/lib/x86
08-02 17:15:49.730 25321-25384/com.parse.starter D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true

                                                                   [ 08-02 17:15:49.733 25321:25321 D/         ]
                                                                   HostConnection::get() New Host Connection established 0xaa1a9010, tid 25321


                                                                   [ 08-02 17:15:49.763 25321:25384 D/         ]
                                                                   HostConnection::get() New Host Connection established 0xaa1a8e60, tid 25384
08-02 17:15:49.769 25321-25384/com.parse.starter I/OpenGLRenderer: Initialized EGL, version 1.4
08-02 17:16:16.054 25321-25321/com.parse.starter I/SaveInBackground: Failed
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err: com.parse.ParseRequest$ParseRequestException: unauthorized
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at com.parse.ParseRequest.newPermanentException(ParseRequest.java:270)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at com.parse.ParseRESTCommand.onResponseAsync(ParseRESTCommand.java:301)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at com.parse.ParseRESTUserCommand.onResponseAsync(ParseRESTUserCommand.java:126)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at com.parse.ParseRequest$3.then(ParseRequest.java:137)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at com.parse.ParseRequest$3.then(ParseRequest.java:133)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at bolts.Task$15.run(Task.java:917)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at bolts.Task.completeAfterTask(Task.java:908)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at bolts.Task.continueWithTask(Task.java:715)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at bolts.Task.continueWithTask(Task.java:726)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at bolts.Task$13.then(Task.java:818)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at bolts.Task$13.then(Task.java:806)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at bolts.Task$15.run(Task.java:917)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
08-02 17:16:16.055 25321-25321/com.parse.starter W/System.err:     at java.lang.Thread.run(Thread.java:818)

2 个答案:

答案 0 :(得分:1)

通常你获得UnAuthorized的原因是因为你没有发起解析SDK或你没有发送正确的APP_ID和/或CLIENT_KEY 为了做到这一点,请执行以下操作:

  1. 使用以下代码启动Parse SDK

    Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
            .applicationId("{YOUR_APP_ID}")
            .server("{YOUR_ENDPOINT_URL}")
            .clientKey("{YOUR_CLIENT_KEY}")
            .build());   
    
  2. 启动Parse SDK后,您可以使用

    注册/登录用户
    ParseUser.logInInBackground("{USER}", "{PASSWORD}", new LogInCallback() {
        @Override
        public void done(ParseUser user, ParseException e) {
    
        }
    });
    

    或使用以下代码注册:

    ParseUser user = new ParseUser();     user.setEmail( “{EMAIL}”);     user.setUsername( “{USERNAME}”);     user.setPassword( “{} PASSWORD”);     user.put( “名字”, “{} FIRST_NAME”);     //在这里添加更多属性

    user.signUpInBackground(new SignUpCallback() {
        @Override
        public void done(ParseException e) {
    
        }
    });
    
  3. 之后,您验证所有详细信息都可以,您可以继续查询,创建,更新或删除解析对象

  4. 祝你好运:)

答案 1 :(得分:1)

Parse为开发人员提供了许多托管方案,Free plan用户对存储,访问和请求有一定的限制。在我的情况下,我得到了这个错误,因为我完成了所有“请求/月”。

对于免费计划,用户每月可以 10k请求。之后你必须升级计划,否则他们会阻止你的许可。

我附加了屏幕截图,您可以从解析应用中的结算部分找到它。

enter image description here