2016-05-18 8 views
0

こんにちは私は、私たちのアプリでいくつかのパブリックドライブのファイルを取得しようとしており、私は正常にAPIに接続することができません。接続できません(バリアントのあるプロジェクトで)

私は、チュートリアルに従っ(https://github.com/googledrive/android-quickstart)の詳細を確認し、またAndroidのクイックスタートを機能させるために管理が、私は、APIにを接続していないよました。

APIキーを作成(いくつかの試み):

enter image description here

のAndroidManifest.xml

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

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission 
     android:name="android.permission.GET_ACCOUNTS" 
     tools:node="remove" /> 
    <uses-permission 
     android:name="android.permission.USE_CREDENTIALS" 
     tools:node="remove" /> 
    <uses-permission 
     android:name="android.permission.READ_EXTERNAL_STORAGE" 
     tools:node="remove" /> 
    <uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
     tools:node="remove" /> 

    <application 
     android:name=".EyeSeeTeaApplication" 
     android:allowBackup="true" 
     android:icon="@drawable/qualityapp_logo" 
     android:label="@string/app_name" 
     android:theme="@style/EyeSeeTheme" 
     tools:replace="android:icon,android:theme" > 

     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 
     ... 

アプリ/ build.gradle

productFlavors { 
    eds { 
     applicationId "org.demo.whatever.eds" 
     versionName "EDS 2.0.0" 
     minSdkVersion 15 
     targetSdkVersion 21 
    } 
    hnqis { 
     applicationId "org.demo.whatever.hnqispull" 
     versionName "HNQIS 1.0.0" 
     minSdkVersion 15 
     targetSdkVersion 21 
    } 
} 

標準活性コード:

public class DashboardActivity extends BaseActivity implements GoogleApiClient.ConnectionCallbacks, 
     GoogleApiClient.OnConnectionFailedListener { 

    ... 

    @Override 
    public void onResume(){ 
     Log.d(TAG, "onResume"); 
     super.onResume(); 
     getSurveysFromService(); 

     //FIXME 
     if (mGoogleApiClient == null) { 
      // Create the API client and bind it to an instance variable. 
      // We use this instance as the callback for connection and connection 
      // failures. 
      // Since no account name is passed, the user is prompted to choose. 
      mGoogleApiClient = new GoogleApiClient.Builder(this) 
        .addApi(Drive.API) 
        .addScope(Drive.SCOPE_FILE) 
        .addConnectionCallbacks(this) 
        .addOnConnectionFailedListener(this) 
        .build(); 
     } 
     // Connect the client. Once connected, the camera is launched. 
     mGoogleApiClient.connect(); 
    } 

       @Override 
    public void onPause(){ 
     Log.d(TAG, "onPause"); 

     //FIXME 
     if (mGoogleApiClient != null) { 
      mGoogleApiClient.disconnect(); 
     } 
     super.onPause(); 
    } 

     @Override 
    public void onConnected(Bundle bundle) { 
     Log.i(TAG, "API client connected."); 
    } 

    @Override 
    public void onConnectionSuspended(int i) { 
     Log.i(TAG, "GoogleApiClient connection suspended"); 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult result) { 
     // Called whenever the API client fails to connect. 
     Log.i(TAG, "GoogleApiClient connection failed: " + result.toString()); 
     if (!result.hasResolution()) { 
      // show the localized error dialog. 
      GoogleApiAvailability.getInstance().getErrorDialog(this, result.getErrorCode(), 0).show(); 
      return; 
     } 
     // The failure has a resolution. Resolve it. 
     // Called typically when the app is not yet authorized, and an 
     // authorization 
     // dialog is displayed to the user. 
     try { 
      result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION); 
     } catch (IntentSender.SendIntentException e) { 
      Log.e(TAG, "Exception while starting resolution activity", e); 
     } 
    } 

     /** 
    * Handles resolution callbacks. 
    */ 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, 
            Intent data) { 
     //FIXME Always resultCode ==0 instead of -1 (RESULT_OK) 
     Log.d(TAG,String.format("onActivityResult(%d, %d)",requestCode,resultCode)); 
    } 
    ... 
}  

質問

私はパッケージ名が2つのフレーバーがあることを考慮に何か問題があると思いますが、私はすべての合理的な組み合わせを試してみたし、誰も働いていない。 APIクレデンシャルで正しいパッケージ名を使用していることを確認するために、パッケージ名アプリをダウンロードしました。

答えて

0

将来の読者のために。

1-クライアントにを接続するには、にOAuth APIを設定する必要があります。

2 - 場合は、あなたがのpackageNameことを再確認しなければならない変種であなたの取引は、あなたはAPPLICATIONID(場合には、これはアプリ/ build.gradle> productFlavorsに指定されている)です。

1

two essential items for authorizationがあります。

  1. のAPI &認証 - >資格情報 - 資格情報は> - >資格情報 - - >のOAuth同意画面MUST> Androidのクライアント1 'SHA1は、' あなたの 'Pakage名'
  2. のAPI &認証と同期している必要がありますあなたの「商品名」と「電子メールアドレス」

はまた、あなたは承認のための正しいSHA1を使用している場合、アプリのkeystoreをチェックすることもできますがあります。

関連する問題