有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法使用Oauth找到我的项目的服务器客户端机密

我是安卓开发新手。我需要使用谷歌账户登录的用户的性别和出生日期

为此,我使用的代码如下所示

class GetGendersTask extends AsyncTask<GoogleSignInAccount, Void, List<Gender>> {
    @Override
    protected List<Gender> doInBackground(GoogleSignInAccount... googleSignInAccounts) {
        List<Gender> genderList = new ArrayList<>();
        try {
            HttpTransport httpTransport = new NetHttpTransport();
            JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance();

            //Redirect URL for web based applications.
            // Can be empty too.
            String redirectUrl = "urn:ietf:wg:oauth:2.0:oob";

            // Exchange auth code for access token
            GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(
                    httpTransport,
                    jsonFactory,
                    getApplicationContext().getString(R.string.server_client_id),
                    getApplicationContext().getString(R.string.server_client_secret),
                    googleSignInAccounts[0].getServerAuthCode(),
                    redirectUrl
            ).execute();

            GoogleCredential credential = new GoogleCredential.Builder()
                    .setClientSecrets(
                            getApplicationContext().getString(R.string.server_client_id),
                            getApplicationContext().getString(R.string.server_client_secret)
                    )
                    .setTransport(httpTransport)
                    .setJsonFactory(jsonFactory)
                    .build();

            credential.setFromTokenResponse(tokenResponse);

            People peopleService = new People.Builder(httpTransport, jsonFactory, credential)
                    .setApplicationName("My Application Name")
                    .build();

            // Get the user's profile
            Person profile = peopleService.people().get("people/me").execute();
            genderList.addAll(profile.getGenders());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return genderList;
    }

    @Override
    protected void onPostExecute(List<Gender> genders) {
        super.onPostExecute(genders);
        // iterate through the list of Genders to
        // get the gender value (male, female, other)
        for (Gender gender : genders) {
            String genderValue = gender.getValue();
        }
    }
}

为了成功地执行上面显示的代码,我需要server\u client\u id和server\u client\u secret。进入应用程序的开发人员控制台后,我找到了我的服务器\客户端\ id,但不幸的是,我无法找到服务器\客户端\密钥。 我在网上冲浪了很多次,最终没有找到答案。我知道很多人已经提出了这个问题。但很抱歉,我找不到答案

谁能帮我解决这个问题

提前感谢。:)


共 (1) 个答案

  1. # 1 楼答案

    Android不使用客户端机密。因为它是用户持有的设备,所以它不会是长时间的秘密。如果您的项目需要客户端密码,请转到开发控制台并创建一组附加凭据,指定Web App