- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想为我的应用程序使用 Google 登录,但我总是收到消息 Status{statusCode=unknown status code: 12500, resolution=null
并且登录失败。有人知道问题出在哪里吗?
这是我的 Activity :
public class GruppenActivity extends AppCompatActivity implements
GoogleApiClient.OnConnectionFailedListener,
View.OnClickListener {
private static final String TAG = "SignInActivity";
private static final int RC_SIGN_IN = 9001;
private GoogleApiClient mGoogleApiClient;
private TextView mStatusTextView;
private ProgressDialog mProgressDialog;
private LernAppDB db;
private SQLiteDatabase sqlDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gruppen);
// Views
mStatusTextView = (TextView) findViewById(R.id.status);
// Button listeners
findViewById(R.id.sign_in_button).setOnClickListener(this);
findViewById(R.id.sign_out_button).setOnClickListener(this);
findViewById(R.id.disconnect_button).setOnClickListener(this);
db = new LernAppDB(this);
sqlDatabase = db.getReadableDatabase();
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken(getString(R.string.server_client_id))
.requestServerAuthCode(getString(R.string.server_client_id))
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this , this )
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button);
signInButton.setSize(SignInButton.SIZE_STANDARD);
signInButton.setScopes(gso.getScopeArray());
}
@Override
public void onStart() {
super.onStart();
OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
if (opr.isDone()) {
Log.d(TAG, "Got cached sign-in");
GoogleSignInResult result = opr.get();
handleSignInResult(result);
} else {
showProgressDialog();
opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {
@Override
public void onResult(GoogleSignInResult googleSignInResult) {
hideProgressDialog();
handleSignInResult(googleSignInResult);
}
});
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result);
}
}
private void handleSignInResult(GoogleSignInResult result) {
Log.d(TAG, "handleSignInResult:" + result.isSuccess());
if (result.isSuccess()) {
// Signed in successfully, show authenticated UI.
GoogleSignInAccount acct = result.getSignInAccount();
String personName = acct.getDisplayName();
String personEmail = acct.getEmail();
ZentraleDB zentraleDB = new ZentraleDB();
ZentraleDB.benutzerAnlegen(sqlDatabase,personEmail,"hans","wilhelm",personName,"tesr");
mStatusTextView.setText(getString(R.string.signed_in_fmt, acct.getDisplayName()));
updateUI(true);
} else {
updateUI(false);
}
}
private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
private void signOut() {
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
// [START_EXCLUDE]
updateUI(false);
// [END_EXCLUDE]
}
});
}
private void revokeAccess() {
Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
updateUI(false);
}
});
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.d(TAG, "onConnectionFailed:" + connectionResult);
}
private void showProgressDialog() {
if (mProgressDialog == null) {
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage(getString(R.string.loading));
mProgressDialog.setIndeterminate(true);
}
mProgressDialog.show();
}
private void hideProgressDialog() {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.hide();
}
}
private void updateUI(boolean signedIn) {
if (signedIn) {
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
} else {
mStatusTextView.setText(R.string.signed_out);
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.sign_in_button:
signIn();
break;
case R.id.sign_out_button:
signOut();
break;
case R.id.disconnect_button:
revokeAccess();
break;
}
}
}
最佳答案
需要检查的几件事:
1. 在 Firebase Console. 中检查您正确的 SHA 证书指纹
2. 检查 Google API Console. 中的以下警告
选择支持电子邮件后,警告消失了。它开始工作了。
关于java - GoogleSignInResult isSuccess 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36140818/
我想为我的应用程序使用 Google 登录,但我总是收到消息 Status{statusCode=unknown status code: 12500, resolution=null 并且登录失败。
我已使用 createUserWithEmailAndPassword 方法注册用户,他们已在我的 firebase 项目中注册(我可以看到他们的信息)。但是,当我尝试使用创建的电子邮件和密码登录时,
我正在创建一个 Android 应用程序并正在实现登录/注册功能。 我正处于注册 Activity 在我的 Firebase 应用程序中成功创建用户条目的阶段,但是,我似乎无法跟踪任务是否成功。 pr
我正在使用 firebase 作为后端服务。我正在将数据插入到我的 firebase 数据库中,我使用以下代码检查插入是否成功,但它始终返回 false。 boolean issucessfull =
我在我的 android 应用程序中使用 Firebase。在我的注册方法中,我使用了 createUserWithEmailAndPassword() 方法。为了检查我的注册过程是否成功,我正在使用
所以我根据TeamUp calendar documentation安装了Guzzle库版本6 .但是,当我尝试运行下面的代码时,我得到 Fatal error: Call to undefined
FirebaseAuth.AuthStateListener mAuthListener; private FirebaseAuth mAuth; EditText name, email, pass
我在测试我的应用程序后无意中发现了这个。我有一个包含 cardview 的 recycleListView,每个 cardview 都有一个来自 firestore 的文档。在我随机删除一些文档后,它
今天,我的实时站点没有任何变化,使用 Google 外部登录提供程序登录停止工作。这只会发生在有谷歌登录的用户身上,其他供应商都可以。这也只发生在实时站点上,我的开发机器运行相同代码的调试版本没问题。
我终于从 Instagram 的 API 获得了访问 token 的响应。 final Call accessToken = ServiceManager.createTokenService().
我正在尝试使用 Retrofit2 发出 POST 请求。但我遇到的情况是 response.isSuccessful() 返回 false 并且我不知道如何调试它。我检查了后端日志,没有任何错误,什
我正在以这种方式管理回调,但结果总是在不应该成功的时候成功。 例子: 我搜索了一个不存在的文件,它没有显示日志 我在与互联网断开连接时搜索了一个文件,但它仍然没有显示日志 即使我在与互联网断开连接时在
我正在尝试使用 Alamofire 发出获取请求。我收到一条错误消息,指出“‘Result’类型的值没有成员‘isSuccess’”。这是我的代码: func getWeatherData (url:
当useMutaion是Success时,我想做一些逻辑操作,我不知道应该使用什么,什么时候应该使用,‘Success’是布尔值,还是‘onSuccess’是回调函数?
I want to do some logic when useMutaion is success, and I don't know what and when should I use,
我正在将 DotNetOpenAuth 与 MVC 4 应用程序一起使用。突然,Google 身份验证失败(MS 正在工作)。股票代码的作用是: [AllowAnonymous] public Act
最近对 GMS 任务库进行了 @Nullable 更改。前几行反编译的 .class 看起来像 public abstract class Task { public Task() {
我有一个简单的程序,我在我的早期版本 (Swift 4) 中使用过它。我现在已经更新到新版本(Swift 5、Alamofire 5.0.0-rc.2),因为我还是初学者,所以遇到了问题。我已经可以重
我刚刚克隆了整个 android-samples 库并尝试运行 CurrentPlaceDetailsOnMap项目。我已经完成了给我的所有说明,包括创建我自己的 API。但是,每次我只是点击 Get
我在 swift 上使用 alamoFire,但我遇到了这个问题:“isSuccess' 由于'内部'保护级别而无法访问”。我试过this我也试过this ,这是我的代码: AF.request(js
我是一名优秀的程序员,十分优秀!