我第一次尝试在 Google Cloud Endpoints android 应用程序中以调试模式使用身份验证时遇到了问题。我这样设置凭据:
credential = GoogleAccountCredential.usingAudience(this,
"server:client_id:long-string-i-got-from-api-console");
credential.setSelectedAccountName(accountName);
然后尝试像这样使用它:
final String LOCAL_APP_ENGINE_SERVER_URL = "http://xxx.xxx.x.xxx:8888";
Testdbendpoint.Builder endpointBuilder = new Testdbendpoint.Builder(
AndroidHttp.newCompatibleTransport(),
new GsonFactory(),
credential);
endpointBuilder.setRootUrl(LOCAL_APP_ENGINE_SERVER_URL + "/_ah/api/");
Testdbendpoint endpoint = endpointBuilder.build();
try {
TestDB testDB = new TestDB().setId(10101L);
TestDB result = endpoint.insertTestDB(testDB).execute(); //-- fails here!!!!
} catch ...
但尝试失败了,我在 logCat 中收到以下消息:
03-06 23:33:20.418: W/System.err(11861): 原因:
com.google.android.gms.auth.GoogleAuthException:未知 03-06
23:33:20.418:W/System.err(11861):在
com.google.android.gms.auth.GoogleAuthUtil.getToken(来源未知)
03-06 23:33:20.423: W/System.err(11861): 在
com.google.android.gms.auth.GoogleAuthUtil.getToken(来源未知)
03-06 23:33:20.428: W/System.err(11861): 在
com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:192)
也许您的 Android 客户端 ID 的证书指纹 (SHA1) 错误?仅当您手动签署 .apk 时,使用生产密钥指纹进行的身份验证才有效。
使用您的 debug.keystore 指纹为已安装的应用程序 (Android) 注册客户端 IDAPI控制台。要获取指纹,请使用:
C:\>keytool -list -alias androiddebugkey -keystore C:\.android\debug.keystore -storepass android -keypass android
您还需要一个 Web-Client-Id 并将其设置为 Android 应用程序中的 Audience:
credential = GoogleAccountCredential.usingAudience(this,"server:client_id:" + WEB_CLIENT_ID);
AppEngine 端点配置应如下所示:
@Api(
name = "testEndpoint",
version = "v1",
clientIds = {ClientIds.WEB_ID, ClientIds.ANDROID_PRODUCTION_ID, ClientIds.ANDROID_DEBUG_ID},
audiences = {ClientIds.WEB_ID}
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)