3

Smart Lockについて知っている人はいますか?それはどのように機能しますか?

Android アプリケーションでパスワード用の Smart Lock を実装するアプリケーションを開発したいと考えています。

https://developers.google.com/identity/smartlock-passwords/android/に従っています。

初期化しましたGoogleApiClient

 mCredentialsApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Auth.CREDENTIALS_API)
            .build();

Credentialasの生成されたインスタンス

 final Credential credential = new Credential.Builder(email)
            .setPassword(password)
            .build();

を使用して資格情報を保存するCredentials APIには、使用しました

Auth.CredentialsApi.save(mCredentialsClient, credential).setResultCallback(
 new ResultCallback() {
  @Override
  public void onResult(Status status) {
      if (status.isSuccess()) {
          // Credentials were saved
      } else {
          if (status.hasResolution()) {
              // Try to resolve the save request. This will prompt the user if
              // the credential is new.
              try {
                  status.startResolutionForResult(this, RC_SAVE);
              } catch (IntentSender.SendIntentException e) {
                  // Could not resolve the request
              }
          }
      }
  }
});

Manifestは次の許可を持っています

   <uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

Meta dataまた、アプリケーションタグ内に次のように追加しました

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

Androidアプリケーションですべてを行った後、プロジェクトを生成し、このリンクGoogle Developer Consoleに記載されているようにすべてを行いました。

しかし、プロジェクトを実行すると、次のようなエラーが発生します。

エラーを解決できませんでした。

Google の Smart Lock for Password on Android アプリケーションに取り組んだ人はいますか?

4

2 に答える 2

7

私の場合、 Androidサンプル プロジェクトのSmart Lock for Passwordsは問題なく動作しました。そこから始めてみて、それが役立つかどうかを確認してください。サンプル コードでは、資格情報の保存は次のように実装されます。

onCreate

    mCredentialsApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Auth.CREDENTIALS_API)
            .build();

...saveCredetialメソッド内:

    final Credential credential = new Credential.Builder(email)
            .setPassword(password)
            .build();

    Auth.CredentialsApi.save(mCredentialsApiClient, credential).setResultCallback(
            new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    if (status.isSuccess()) {
                        Log.d(TAG, "SAVE: OK");
                        showToast("Credential Saved");
                        hideProgress();
                    } else {
                        resolveResult(status, RC_SAVE);
                    }
                }
            });

...resolveResultメイン アクティビティのメソッド:

private void resolveResult(Status status, int requestCode) {
    Log.d(TAG, "Resolving: " + status);
    if (status.hasResolution()) {
        Log.d(TAG, "STATUS: RESOLVING");
        try {
            status.startResolutionForResult(MainActivity.this, requestCode);
        } catch (IntentSender.SendIntentException e) {
            Log.e(TAG, "STATUS: Failed to send resolution.", e);
            hideProgress();
        }
    } else {
        Log.e(TAG, "STATUS: FAIL");
        showToast("Could Not Resolve Error");
        hideProgress();
    }
}
于 2015-06-10T19:49:57.450 に答える