gpt4 book ai didi

android - G+ 连接失败 statusCode=SIGN_IN_REQUIRED

转载 作者:行者123 更新时间:2023-11-29 01:15:40 25 4
gpt4 key购买 nike

为什么会出现此错误?我已经在 Google Developer Console 中创建了一个项目,启用了 Drive API 和 Google+ API,并使用我签名的 apk 的 sha1 添加了“Android Client Id”(顺便说一句,我已经在 google play console 上作为测试版共享)。

我获得了 GET_ACCOUNTS 权限,当我在列表中选择我的 G+ 邮件时,出现此错误:

 D/G+: Connection failed4ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent

我是否必须在我的项目文件夹中的某处添加 client_id.json? (我刚刚在 Google Developer Console 中为 Drive 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();
}

最佳答案

您收到错误 SIGN_IN_REQUIRED因为客户端尝试连接到该服务,但用户未登录。

The client may choose to continue without using the API. Alternately, if hasResolution() returns true the client may call [startResolutionForResult(Activity, int)](https://developers.google.com/android/reference/com/google/android/gms/common/ConnectionResult.html#startResolutionForResult(android.app.Activity, int)) to prompt the user to sign in. After the sign in activity returns with RESULT_OK further attempts should succeed.

基于此forum ,尝试通过从您的 gmail 帐户转到 Google API 控制台来解决此问题。您会在 Google Drive API 前面看到一个禁用按钮。您将看到一个齿轮或设置按钮,单击它并生成 oAuth token 。

这里有一些相关的主题:

希望这对您有所帮助!

关于android - G+ 连接失败 statusCode=SIGN_IN_REQUIRED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39856431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com