GoogleコンソールでAndroidアプリをAPIとして署名し、バックエンドサーバーをGoogleコンソールでoauthクライアントとして署名しました。
私はgradleファイルも更新したので、トークンIDを取得するために必要なものは何でも更新しました。
しかし、どういうわけか、私はいつもグーグルからトークンを取得できません。
Google コンソールからパッケージ名と ssh1 コードを確認し、コマンドを使用してデバッグ ssh1 と一致させました。keytool -list -v -keystore mydebudpath\debug.keystore
ここに Android コードを送信します。
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
validateServerClientID();
// [START configure_signin]
// Request only the user's ID token, which can be used to identify the
// user securely to your backend. This will contain the user's basic
// profile (name, profile picture URL, etc) so you should not need to
// make an additional call to personalize your application.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.server_client_id))
.requestServerAuthCode(getString(R.string.server_client_id), false)
.requestEmail()
.build();
// [END configure_signin]
// Build GoogleAPIClient with the Google Sign-In API and the above options.
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.enableAutoManage(getActivity()/* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
}
と私の onActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_GET_TOKEN) {
// [START get_id_token]
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
Log.d(TAG, "onActivityResult:GET_TOKEN:success:" + result.getStatus().isSuccess());
if (result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
String idToken = acct.getIdToken();
// Show signed-in UI.
Log.d(TAG, "idToken:" + idToken);
updateUI(true);
// TODO(user): send token to server and validate server-side
} else {
// Show signed-out UI.
updateUI(false);
}
// [END get_id_token]
}
}
コードresult.getStatus().isSuccess();
は常に返されます 上記のコードで、myは、Google 開発者コンソールで Web アプリケーション oauth2 として作成したサーバーの client_id であることfalse
にも注意してください。Android認証コードでAndroidを使用したことはありません。どこで使用すればよいですか?
どの部分が間違っていますか?R.string.server_client_id
api_key