Java 如何使用google Oauth?我正在使用Android接收连接失败错误

Java 如何使用google Oauth?我正在使用Android接收连接失败错误,java,android,google-api,google-oauth,google-api-client,Java,Android,Google Api,Google Oauth,Google Api Client,我已经获得了一个android api密钥,并将其放在我的清单文件中。我还使用谷歌开发者控制台获得了我的clientID和SHA1指纹。我不确定是否需要在我的项目中包含我的客户ID 我的客户类: public class Client { private static final int REQUEST_OAUTH = 1; private GoogleApiClient client; private boolean authInProgress = false;

我已经获得了一个android api密钥,并将其放在我的清单文件中。我还使用谷歌开发者控制台获得了我的clientID和SHA1指纹。我不确定是否需要在我的项目中包含我的客户ID

我的客户类:

public class Client {
    private static final int REQUEST_OAUTH = 1;

    private GoogleApiClient client;
    private boolean authInProgress = false;

    private Display display;

    public interface Connection {
        public void onConnected();
    }
    private Connection connection;

    public Client(final Activity activity, final Connection connection, final Display display) {
        this.display = display;
        this.connection = connection;
        client = new GoogleApiClient.Builder(activity)
                .addApi(Fitness.SENSORS_API)
                .addApi(Fitness.HISTORY_API)
                .addApi(Fitness.RECORDING_API)
                .addApi(Fitness.CONFIG_API)
                .addScope(SCOPE_LOCATION_READ)
                .addScope(SCOPE_ACTIVITY_READ)
                .addScope(SCOPE_BODY_READ_WRITE)
                .addConnectionCallbacks(
                        new GoogleApiClient.ConnectionCallbacks() {

                            @Override
                            public void onConnected(Bundle bundle) {
                                display.show("Connected");
                                connection.onConnected();
                            }

                            @Override
                            public void onConnectionSuspended(int i) {
                                display.show("Connection suspended");
                                if (i == GoogleApiClient.ConnectionCallbacks.CAUSE_NETWORK_LOST) {
                                    display.show("Connection lost. Cause: Network Lost.");
                                } else if (i == GoogleApiClient.ConnectionCallbacks.CAUSE_SERVICE_DISCONNECTED) {
                                    display.show("Connection lost. Reason: Service Disconnected");
                                }
                            }
                        }
                )
                .addOnConnectionFailedListener(
                        new GoogleApiClient.OnConnectionFailedListener() {
                            // Called whenever the API client fails to connect.
                            @Override
                            public void onConnectionFailed(ConnectionResult result) {
                                display.log("Connection failed. Cause: " + result.toString());
                                if (!result.hasResolution()) {
                                    GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), activity, 0).show();
                                    return;
                                }

                                if (!authInProgress) {
                                    try {
                                        display.show("Attempting to resolve failed connection");
                                        authInProgress = true;
                                        result.startResolutionForResult(activity, REQUEST_OAUTH);
                                    } catch (IntentSender.SendIntentException e) {
                                        display.show("Exception while starting resolution activity: " + e.getMessage());
                                    }
                                }
                            }
                        }
                )
                .build();
    }

    public void connect() {
        client.connect();
    }

    public void disconnect() {
        if (client.isConnected()) {
            client.disconnect();
        }
    }

    //        disable should be called only for revoking authorization in GoogleFit
    public void revokeAuth() {
        PendingResult<Status> pendingResult = ConfigApi.disableFit(client);
    }

    public GoogleApiClient getClient() {
        return client;
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_OAUTH) {
            display.log("onActivityResult: REQUEST_OAUTH");
            authInProgress = false;
            if (resultCode == Activity.RESULT_OK) {
                // Make sure the app is not already connected or attempting to connect
                if (!client.isConnecting() && !client.isConnected()) {
                    display.log("onActivityResult: client.connect()");
                    client.connect();
                }
            }
        }
    }
}
11-22 08:54:34.204 14727-14727/com.svi.activitytracker D/com.svi.activitytracker.lib.Client: Connection failed. Cause: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{52e26364: android.os.BinderProxy@52e457d0}}
11-22 08:54:34.204 14727-14727/com.svi.activitytracker D/com.svi.activitytracker.lib.Client: Attempting to resolve failed connection
11-22 08:54:38.144 14727-14727/com.svi.activitytracker D/com.svi.activitytracker.ui.MainActivity: onActivityResult
11-22 08:54:38.144 14727-14727/com.svi.activitytracker D/com.svi.activitytracker.lib.Client: onActivityResult: REQUEST_OAUTH

您需要创建一个outh2客户端id,并从api面板启用fitness api。你不会在那里找到它,你必须在搜索栏的上方键入它。然后它将用于参考

您需要创建一个outh2客户端id并从api面板启用fitness api。你不会在那里找到它,你必须在搜索栏的上方键入它。那么它将起到参考作用