首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google SignIn API异常10

Google SignIn API异常10
EN

Stack Overflow用户
提问于 2018-03-23 12:53:48
回答 16查看 52.7K关注 0票数 48

接近身份验证的最后阶段,但是handleSignInResult方法出现了问题。它返回日志中的异常代码10 (开发人员错误)。Google提供了全面的描述:

应用程序配置错误。此错误不可恢复,将被视为致命错误。开发商是个白痴..。

我应该做些什么来处理这个问题(获得一个帐户)并最终从帐户中检索值?

提前感谢您的帮助!

MainActivity:

代码语言:javascript
复制
package ru.podgorny.carcall;

import ...

public class MainActivity extends AppCompatActivity {

        SignInButton signInButton;
        public static final int RC_SIGN_IN = 07;
        public static final String TAG = "MainActivity";
        TextView tw1;
        TextView tw2;


        GoogleSignInOptions gso;
        GoogleSignInClient mGSC;


        @Override
        protected void onCreate (Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "Activity Works");
        findViews();

            gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestEmail()
                    //.requestProfile()
                    .build();

            mGSC = GoogleSignIn.getClient(this, gso); //smth with mGSC variable....

             View.OnClickListener onClickListener = new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onClick2(v);
                }
            };
             signInButton.setOnClickListener(onClickListener);




    }

    private void findViews() {
            Log.d (TAG, "findViews started");
        signInButton = findViewById(R.id.idButtonGoogle);

        tw1 = findViewById(R.id.textView1);
        tw1 = findViewById(R.id.textView2);

        Log.d(TAG, "Views finded");


    }

    public void onClick2(View view) {
            Log.d(TAG, "onClick started");
        switch (view.getId()) {
            case R.id.idButtonGoogle:
                signIn();
                break;
        }
        Log.d(TAG, "OnClick Started");
    }

    public void signIn() {

        Intent signInIntent = mGSC.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
        Log.d(TAG, "startActivityForResult works");

    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.d(TAG, "OnActivityResult started");
        // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            // The Task returned from this call is always completed, no need to attach
            // a listener.
            Log.d(TAG, "TASK started");
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            handleSignInResult(task);
            Log.d(TAG, "OnActivityResult returned");
        }
    }

    private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
        try {
            GoogleSignInAccount account = completedTask.getResult(ApiException.class);//ERROR -- Code 10
            Log.d(TAG, "Account received");


            updateUI(account);
            Log.d(TAG, "updateUI Launched");
        } catch (ApiException e) {

            Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
            updateUI(null);
        }
    }

    private void updateUI(GoogleSignInAccount account) {
            if (account!=null) {
                tw1.setText("OK");
                tw2.setText("Name: " + account.getGivenName() + ", Family name: " + account.getFamilyName() + ", Email: " + account.getEmail() /*+ " image: " +
                        account.getPhotoUrl()*/);
            }else {
                tw1.setText("SMTH wrong");
            }

        }

}
EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2018-03-23 13:33:40

如果您不在console.developers.googleconsole.firebase.google.com.上使用相同的项目,则可能会发生此错误。如果两个控制台上的项目相同,请确保正确地添加了SHA1键。从安卓工作室获得SHA1

  1. 开放Android Studio
  2. 打开您的项目
  3. 单击Gradle (从右侧面板,您将看到Gradle Bar)
  4. 单击Refresh (单击Gradle Bar上的刷新,您将看到项目的列表脚本)
  5. 单击您的项目(项目名称表单列表(根))
  6. 单击任务
  7. 点击Android
  8. 双击signingReport (您将在Run中获得SHA1和MD5 (有时在Gradle控制台中))
  9. 从模块选择中选择app模块,下拉运行或调试应用程序
,您还需要从firebase控制台获取google-services.json,并将其放入您的项目中。
票数 69
EN

Stack Overflow用户

发布于 2020-11-13 20:06:36

我的答案是,你实际上需要把这里给出的两个主要答案结合起来:

  1. 确保您为Android创建了Google OAuth客户端in (一个用于调试,另一个用于发布),然后确保它们分配了正确的SHA1,如所接受的答案所述。
  2. 然后,还需要为Web创建一个OAuth客户端ID,并将该ID用于实际的SignIn: 新GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) GoogleSignInOptions .requestIdToken(WEB_CLIENT_ID) .requestEmail() .build();
票数 5
EN

Stack Overflow用户

发布于 2020-11-20 17:59:57

我用这种方法解决了这个问题

代码语言:javascript
复制
 GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.AUTH_ID))
                .requestEmail()
                .build();

我的AUTH_ID在哪里

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49450140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档