为什么我得到这个错误?我已经在Google开发者控制台中创建了一个项目,启用了Drive API和Google+ API,并添加了我的已签名apk的sha1(我已经在Google Play控制台上作为测试版共享)的“Android客户端ID”。
我得到的权限GET_ACCOUNTS
,当我选择我的G +邮件列表中,我得到这个错误:G +连接失败statusCode = SIGN_IN_REQUIRED
D/G+: Connection failed4ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent
我必须在我的项目文件夹添加client_id.json
地方? (我只是创造了它在谷歌开发者控制台驱动API)。
代码:
// 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令牌,并且我将google_services.json导入到“app /”文件夹中,并且出现此错误。是否必须在我的代码中使用该client_id? – erginduran
btw我检查了你的链接没有回答的问题,我认为许多脂肪酶都面临着这个问题。 – erginduran