TL;DR; Google+ でサインインしている場合、GoogleFit API クライアントが接続しない
だから... GoogleFitとGoogle+ APIを一緒に使用すると問題に直面しています。Google+ を使用してユーザーをサインインさせ、GoogleFit を使用してフィットネスを取得しています。
Google+ 以外にも、Facebook や Twitter などのログイン オプションがいくつかあります。私の問題は、ユーザーが Google+ でサインインしている場合、ユーザーが Google Fit クライアントに接続できなくなることです。基本的にGoogleFitに接続するボタンを押しても何も起こりません。ユーザーが Facebook または Twitter で認証された場合、GoogleFit クライアントは問題なく接続できます...
このアクティビティの関連コードを次に示します。
Google+ クライアント:
private GoogleApiClient buildGoogleApiClient() {
return new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_LOGIN)
.addScope(Plus.SCOPE_PLUS_PROFILE)
.build();
}
Google Fit クライアントでは、ユーザーがボタンを押して GoogleFit をアプリにリンクするたびに、このメソッドが呼び出されます。
public void buildFitnessClient(Button b) {
// Create the Google API Client
fitConnectButton = b;
mClient = new GoogleApiClient.Builder(this)
.addApi(Fitness.API)
.addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mClient.connect();
}
ライフサイクルのもの:
@Override
public void onConnected(Bundle bundle) {
mSignInClicked = false;
if(mGoogleServices != null) {
Plus.PeopleApi.loadVisible(mGoogleServices, null).setResultCallback(this);
userData = getProfileInformation();
}
if (hasWearDevice) mClient.connect();
}
@Override
protected void onStart() {
super.onStart();
// Connect to G+ api
if(mGoogleServices != null) mGoogleServices.connect();
// Connect to the Fitness API
if (hasWearDevice) mClient.connect();
}
@Override
public void onStop() {
super.onStop();
if(mGoogleServices != null) {
if(mGoogleServices.isConnected()) mGoogleServices.disconnect();
}
if(hasWearDevice) {
if(mClient.isConnected()) mClient.disconnect();
}
}
助言がありますか?