Java 如何使用google Oauth?我正在使用Android接收连接失败错误
我已经获得了一个android api密钥,并将其放在我的清单文件中。我还使用谷歌开发者控制台获得了我的clientID和SHA1指纹。我不确定是否需要在我的项目中包含我的客户ID 我的客户类: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;
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。你不会在那里找到它,你必须在搜索栏的上方键入它。那么它将起到参考作用