当前位置: 首页 > 知识库问答 >
问题:

适用于Android的Google API客户端-如何申请帐户?

全鸿晖
2023-03-14

在我的应用程序中,我为用户提供了一个选项,可以将其数据(一个db和一些音频文件)备份到应用程序文件夹中的Google Drive帐户。为此,用户必须在以下对话框中“为MyApp选择帐户”:

mGAPIClient = new GoogleApiClient.Builder(mACA)
                .enableAutoManage(mACA, this)
                .addApi(Drive.API)
                .addScope(Drive.SCOPE_APPFOLDER)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();

之后,我开始备份过程。

但是,如果用户点击该对话框之外的某个地方,它会消失并且不会建立连接-并且不会再次显示该对话框。

发生这种情况时,我如何提示系统再次向他/她显示该对话框?除此之外,我还尝试将GoogleAppClient实例设置为null并再次构建它,但没有成功。

共有1个答案

堵宏毅
2023-03-14

我使用了官方博客文章中建议的最新GoogleApi客户端,并且使用了AGP 3.0.1和Gradle 4.2.1。

>

  • 将此类路径添加到项目生成中。渐变依赖项

    classpath 'com.google.gms:google-services:3.1.2'
    

    将这些依赖项添加到应用程序构建。格拉德尔

    implementation 'com.google.android.gms:play-services-auth:11.6.2'
    implementation 'com.google.android.gms:play-services-drive:11.6.2'
    

    在应用程序build.gradle文件的底部添加插件行

    apply plugin: 'com.google.gms.google-services'
    

    在我的示例中,我有:

    public class MainActivity extends AppCompatActivity {
    
        private static final int RC_SIGN_IN = 9001;
    
        private GoogleSignInClient mSignInClient;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //request access to drive
            GoogleSignInOptions options =
                    new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                            .requestScopes(Drive.SCOPE_FILE)
                            .build();
    
            mSignInClient = GoogleSignIn.getClient(this, options);
            //button to launch the signIn flow
            FloatingActionButton fab = findViewById(R.id.fab);
            fab.setOnClickListener(view -> signIn());
        }
    
        private void signIn() {
            // Launches the sign in flow, the result is returned in onActivityResult
            Intent intent = mSignInClient.getSignInIntent();
            startActivityForResult(intent, RC_SIGN_IN);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
    
            if (requestCode == RC_SIGN_IN) {
                Task<GoogleSignInAccount> task =
                        GoogleSignIn.getSignedInAccountFromIntent(data);
                if (task.isSuccessful()) {
                    // Sign in succeeded, proceed with account
                    GoogleSignInAccount acct = task.getResult();
                    // proceed with your logic
                } else {
                    // Sign in failed, handle failure and update UI
                    // we should probably show a motivation screen to the user before showing
                    // the account selection again, but for example purposes we launch the
                    // sign-in flow immediately
                    signIn();
                }
            }
        }
    }
    

    对我来说,这很有效。如果对你也有效,请告诉我。

  •  类似资料:
    • 问题内容: 我正在开发一个项目,该项目需要解析一些受保护的网页中的数据。为了获得对这些页面的访问权限,我必须克服SAML身份验证形式(Shibboleth)。是否有人能够在Android(Java)中实现此标准?我已经读过这个线程:Android的SAML客户端实现? 但这并不能给我一个很好的解决方案。实际上,我需要 获取某些受保护网页的数据 以便对其进行解析,而不是让用户看到此类网页的内容。因此

    • 问题内容: 有人知道iOS的Elasticsearch客户端库吗?如果它也是迅速写的,那将是一个好处。 elasticsearch的“客户端”部分显示了多个平台的多个库,但对于iOS没有任何显示,我觉得有人必须这样做吗? 干杯 问题答案: 我怀疑是否有人- 上次我检查时没有,并且有充分的理由。请记住,为了允许IOS客户端(或Android)使用客户端库连接到Elasticsearch,您必须打开集

    • 我有一个连接到WebSocket服务器并从服务器接收消息的微服务。我想在这个应用程序中集成Sleuth,因为这是我的一组微服务的网关。但是当我连接到WebSocket服务器并开始接收消息时,我无法在日志中跟踪ID,spanid。我期待着这样的事情: 但我得到了: 我的代码如下: 我们的pom条目包括:

    • 我需要阻止用户访问Keycloak帐户客户机(/auth/realms/[MYREALM]/Account),但我需要这个客户机提供的Rest API。 我用的是Keycloak 4.1.0。我试图通过keycloak管理面板(/auth/admin/master/console/#/realms/[MYREALM]/clients)禁用account client,但是如果禁用此客户端,acco

    • 然后我使用: 这似乎无法为那些设置了该属性的客户机提供一个clusergroup。这对客户端节点不起作用吗?

    • 为一个问题申请精选 为一个问题申请精选 POST /api/v2/user/question-application/:question 响应 Http Status 201 Created { "message": [ "操作成功" ] }