2013-04-03 19 views
0

显然这是一个安全问题,但从网站下载的示例工作正常(ToDo),我的应用程序更简单,不起作用,因为我真的不明白,我检查图书馆,宣言,代码,一切似乎都是正确的。我究竟做错了什么? 我对前面这个问题的悬而未决的问题,但现在我认为我最能说明问题使用Android应用程序在Azure中保留数据的安全错误

错误:未经授权

Complete error: Error in activity com.microsoft.windowsazure.mobileservices.MobileServiceException: Error while processing request. at com.microsoft.windowsazure.mobileservices.MobileServiceConnection$1.onNext at com.microsoft.windowsazure.mobileservices.MobileServiceClient$4.handleRequest at com.microsoft.windowsazure.mobileservices.MobileServiceConnection.start at com.microsoft.windowsazure.mobileservices.RequestAsyncTask.doInBackground at com.microsoft.windowsazure.mobileservices.RequestAsyncTask.doInBackground at android.os.AsyncTask$2.call at java.util.concurrent.FutureTask$Sync.innerRun at java.util.concurrent.FutureTask.run at android.os.AsyncTask$SerialExecutor$1.run at java.util.concurrent.ThreadPoolExecutor.runWorker at java.util.concurrent.ThreadPoolExecutor$Worker.run at java.lang.Thread.run Caused by: com.microsoft.windowsazure.mobileservices.MobileServiceException: code":401,"error":"Error: Unauthorized"} at com.microsoft.windowsazure.mobileservices.MobileServiceConnection$1.onNext

我的下载代码:https://skydrive.live.com/embed?cid=3CF3FC770FC59E9B&resid=3CF3FC770FC59E9B!1277&authkey=ADQMeBtUVTTIjtE%22

package com.bn7.rota; 
import java.net.MalformedURLException; 

import com.bn7.rota.Item; 
import com.microsoft.windowsazure.mobileservices.*; 
import android.os.Bundle; 
import android.app.Activity; 
import android.util.Log; 
import android.view.Menu; 

public class MainActivity extends Activity { 
    private MobileServiceClient mClient; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     try { 
      mClient = new MobileServiceClient( 
        "https://bn7.azure-mobile.net/", 
        "hCzcrsFYhkGmxPvQDNxyqBXjZwjXlK99", 
        this 
        ); 
      Item item = new Item(); 
      item.IdPhone = "Awesome item"; 
      item.DateTimePhone = "2013/04/02 08:27:32"; 
      item.LatitudePhone = -43; 
      item.LongetudePhone = -23; 
      item.Active = false; 
      mClient.getTable(Item.class).insert(item, new TableOperationCallback<Item>() { 
       public void onCompleted(Item entity, Exception exception, ServiceFilterResponse response) { 
        if (exception == null) { 
         // Insert succeeded 
              } else { 
         // Insert failed 
         Log.d("Insert failed", "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"); 
         Log.d("Insert failed", "Error in activity", exception); 
         Log.d("Insert failed", "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"); 
        } 
       } 
      }); 
     } catch (MalformedURLException e) { 
      Log.d("MalformedURLException", e.toString()); 
     } 
} 


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

} 
package com.bn7.rota; 

public class Item { 
    public int Id; 
    public String IdPhone; 
    public String DateTimePhone; 
    public double LatitudePhone; 
    public double LongetudePhone; 
    public boolean Active; 
    } 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.bn7.rota" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="10" 
     android:targetSdkVersion="17" /> 
     <uses-permission android:name="android.permission.INTERNET" /> 
     <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.bn7.rota.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

回答

3

未批准您收到的错误表示您没有权限在表格上执行操作。如果您的操作权限(在门户中)设置为“任何人使用应用程序密钥”,则您通过不正确的应用程序密钥发送。如果它被设置为“Only Authenticated Users”,那么您需要成为已通过身份验证的用户(通过Mobile Service)才能正常工作。如果它被设置为“仅脚本和管理员”,那么您必须在标题中发送主密钥或从其他脚本访问表。

0

Authentication/Authorization

确保认证/授权被关闭!