2

たくさんのページを調べた後(ほとんど矛盾しています)、OAuth2でGoogleに接続する単純なAndroidアプリを作成できません。

私はこのページから始めました:

https://developers.google.com/google-apps/tasks/oauth-and-tasks-on-android#account

私は現在のライブラリをダウンロードしましたが、多くの非推奨または欠落している関数を経験する必要がありました。

  • GoogleAccountManagerは非推奨になりました
  • HttpTransport、AndroidHttp、AccessProtectedResource、GoogleAccessProtectedResource、JacksonFactoryは現在のライブラリに見つかりません
  • DeveloperConsoleを介したCLIENT_IDの生成が機能しました
  • SECRETの生成はモバイルアプリでは機能しませんでしたが、必須です

最新の説明は何ですか?最新のデモは何ですか?

念のために-これが私がこれまでにしたことです。processTokenReceivedのメソッドはいずれもlibsの一部ではありません。

public class ActivityMain extends Activity implements DialogInterface.OnClickListener {

    private static final String AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/drive";
    private static final String CLIENT_ID = "xxxxxxxxxxxx.apps.googleusercontent.com";

    private AccountManager accountManager;
    private Account[] accounts;
    private String authName;
    private String authToken;

    @Override
    public void onClick(final DialogInterface dialogInterface, final int item) {

        processAccountSelected(accounts[item]);
    }

    @Override
    public void onCreate(final Bundle bundle) {
        super.onCreate(bundle);

        setContentView(R.layout.activitymain);

        accountManager = AccountManager.get(this);
        accounts = accountManager.getAccountsByType("com.google");

        if (accounts == null || accounts.length == 0) {
            // TODO
        } else if (accounts.length == 1) {
            processAccountSelected(accounts[0]);
        } else if (accounts.length > 1) {
            showDialog(MyConstants.DIALOG_ACCOUNTCHOSER);
        }
    }

    @Override
    protected Dialog onCreateDialog(final int id) {
        switch (id) {
            case MyConstants.DIALOG_ACCOUNTCHOSER:
                AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

                String[] names = new String[accounts.length];

                for (int i = 0; i < accounts.length; i++) {
                    names[i] = accounts[i].name;
                }

                alertDialogBuilder.setItems(names, this);
                alertDialogBuilder.setTitle("Select a Google account");
                return alertDialogBuilder.create();
        }

        return null;
    }

    private void processAccountSelected(final Account account) {
        if (account != null) {
            authName = account.name.toString();
            if (!Tools.isEmpty(authName)) {
                Toast.makeText(this, authName, Toast.LENGTH_LONG).show();

                accountManager.getAuthToken(account, AUTH_TOKEN_TYPE, null, this,
                        new AccountManagerCallback<Bundle>() {

                            public void run(final AccountManagerFuture<Bundle> future) {
                                try {
                                    authToken = future.getResult().getString(
                                            AccountManager.KEY_AUTHTOKEN);
                                    processTokenReceived();
                                } catch (OperationCanceledException exception) {
                                    // TODO
                                } catch (Exception exception) {
                                    Log.d(this.getClass().getName(), exception.getMessage());
                                }
                            }
                        }, null);
            }
        }
    }

    private void processTokenReceived() {
        if (!Tools.isEmpty(authToken)) {
            HttpTransport transport = AndroidHttp.newCompatibleTransport();
            AccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(
                    accessToken);
            Tasks service = new Tasks(transport, accessProtectedResource, new JacksonFactory());
            service.accessKey = CLIENT_ID;
            service.setApplicationName("Google-DriveSample/1.0");
        }
    }
}
4

1 に答える 1

0

google-api-services ライブラリAccountManagerと組み合わせて使用​​する最新の例は、更新された Tasks API の例です。たとえば、別のパッケージに移動しただけです。GoogleAccountManager

不足している依存関係を解決する Maven のようなビルド マネージャーを使用していない場合は、もちろん、 などを提供するgoogle-api-java-client ライブラリを手動で含める必要があります。HttpTransport

使用AccountManagerするには、API コンソールで提供される Simple API Access キーを使用するだけで十分です。証明書のフィンガープリントを持つ部分は、Google Play Servicesが利用可能になったときにのみ関連します。

于 2012-09-13T09:00:37.137 に答える