なぜこのエラーが表示されますか?私はすでにGoogle Developer Consoleでプロジェクトを作成しており、ドライブAPIとGoogle+ APIを有効にし、署名付きapkのsha1で「AndroidクライアントID」を追加しました(私はすでにGoogle Playコンソールでベータ版として共有しています)。
私は権限GET_ACCOUNTS
を取得し、私はリストに私のG +のメールを選択したとき、私はこのエラーを取得しています:G +接続に失敗しましたstatusCode = SIGN_IN_REQUIRED
D/G+: Connection failed4ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent
は、私は私のプロジェクトフォルダにclient_id.json
どこかを追加する必要がありますか? (私はドライブのAPI用のGoogleデベロッパーコンソールでそれを作成した。)
コード:
// initialize g+ api client
if (Sp.getBoolean("plus_pic", false)) {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.build();
}
と:
@Override
public void onConnected(Bundle bundle) {
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient);
Person.Image personImage;
Person.Cover.CoverPhoto personCover;
try {
personImage = currentPerson.getImage();
personCover = currentPerson.getCover().getCoverPhoto();
} catch (Exception e) {
Log.e("G+ COnnection error"," ->"+e.toString());
personCover = null;
personImage = null;
}
if (personCover != null && personImage != null) {
String imgUrl = personImage.getUrl();
Log.e("g+ connection","cover and pic not null");
// getting full size image
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(imgUrl);
stringBuilder.delete(imgUrl.length() - 6, imgUrl.length());
Log.d("G+", stringBuilder.toString());
mGoogleName.setText(currentPerson.getDisplayName());
mGoogleId.setText(accountName);
// setting cover pic
ImageLoader.getInstance().loadImage(personCover.getUrl(), displayImageOptions, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
drawerHeaderParent.setBackgroundColor(Color.parseColor("#ffffff"));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
drawerHeaderView.setBackground(new BitmapDrawable(loadedImage));
} else
drawerHeaderView.setBackgroundDrawable(new BitmapDrawable(loadedImage));
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
super.onLoadingFailed(imageUri, view, failReason);
drawerHeaderView.setBackgroundResource(R.drawable.app_header);
drawerHeaderParent.setBackgroundColor(Color.parseColor((currentTab == 1 ? skinTwo : skin)));
}
@Override
public void onLoadingStarted(String imageUri, View view) {
super.onLoadingStarted(imageUri, view);
drawerHeaderView.setBackgroundResource(R.drawable.app_header);
drawerHeaderParent.setBackgroundColor(Color.parseColor((currentTab == 1 ? skinTwo : skin)));
}
});
// setting profile pic
ImageLoader.getInstance().loadImage(stringBuilder.toString(), displayImageOptions, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
drawerProfilePic.setImageBitmap(loadedImage);
drawerProfilePic.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
super.onLoadingFailed(imageUri, view, failReason);
}
});
} else {
Toast.makeText(this, getResources().getText(R.string.no_cover_photo), Toast.LENGTH_SHORT).show();
drawerHeaderView.setBackgroundResource(R.drawable.app_header);
drawerHeaderParent.setBackgroundColor(Color.parseColor((currentTab == 1 ? skinTwo : skin)));
}
}
}
@Override
public void onConnectionSuspended(int i) {
Log.d("G+", "Connection suspended");
new Thread(new Runnable() {
@Override
public void run() {
if (mGoogleApiClient != null) {
mGoogleApiClient.connect();
}
}
}).run();
}
public void onConnectionFailed(final ConnectionResult result) {
Log.d("G+", "Connection failed"+ result.getErrorCode()+result.toString());
if (!mIntentInProgress && result.hasResolution()) {
new Thread(new Runnable() {
@Override
public void run() {
try {
mIntentInProgress = true;
startIntentSenderForResult(result.getResolution().getIntentSender(),
RC_SIGN_IN, null, 0, 0, 0);
} catch (IntentSender.SendIntentException e) {
// The intent was canceled before it was sent. Return to the default
// state and attempt to connect to get an updated ConnectionResult.
mIntentInProgress = false;
if (mGoogleApiClient != null) {
mGoogleApiClient.connect();
}
}
}
}).run();
}
}
と:あなたがエラーを得た
protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
if (requestCode == RC_SIGN_IN && !mGoogleApiKey && mGoogleApiClient != null) {
new Thread(new Runnable() {
@Override
public void run() {
mIntentInProgress = false;
mGoogleApiKey = true;
// !mGoogleApiClient.isConnecting
if (mGoogleApiClient.isConnecting()) {
mGoogleApiClient.connect();
} else
mGoogleApiClient.disconnect();
}
}).run();
}
私はすでにAUTH2トークン生成されたと私は私のコードでそれのclient_idを使用する必要があり、「アプリ/」フォルダに移動し、私はこのerror.Doを取得していgoogle_services.jsonをインポート? – erginduran
btw私はあなたのリンクをチェックして答えられた質問はありません。私は多くのpplがこの問題に直面していると思います。 – erginduran