【问题标题】:Unable to find server client secret of my project using Oauth无法使用 Oauth 找到我的项目的服务器客户端密码
【发布时间】:2017-09-18 07:39:52
【问题描述】:

我是安卓开发新手。我的情况是,我需要使用 Google 帐户登录的用户的性别和出生日期。

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

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_client_id 和 server_client_secret。进入我的应用程序的开发者控制台后,我发现了我的 server_client_id 但不幸的是我找不到 server_client_secret 密钥。 我上网了很多,但最终没有找到答案。我知道很多人已经解决了这个问题。但是很抱歉告诉你我无法找到答案。

谁能帮我解决这个问题。

提前致谢。 :)

【问题讨论】:

    标签: java android oauth google-oauth


    【解决方案1】:

    Android 不使用客户端机密。由于它是用户持有的设备,因此它不会是长久的秘密。如果您需要项目的客户端密码,请转到开发控制台并创建一组额外的凭据,指定 Web 应用程序。

    【讨论】:

    猜你喜欢
    • 2011-08-19
    • 2015-09-06
    • 2012-01-11
    • 2011-03-10
    • 2013-11-06
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多