更新:
刚才我使用我用于Google App Engine的Google帐户注册了Google API,现在错误已更改为 com.google.android.gms.auth.GoogleAuthException: Unknown
谷歌刚刚发布了一种通过谷歌账户注册一个应用程序的新方法,并在他们的博客帖子中给出了一些解释.
我正在编写一个Android应用程序,您必须注册才能创建用户帐户,而我正在使用Google App Engine作为后端.通过播放服务,我希望用户的电子邮件附属于他们的Android设备和令牌.我已经可以收到电子邮件,但是,获取令牌只会引发错误,并且由于文档非常稀疏,我不知道如何解决这些问题.这就是我收到电子邮件的方式:
private String[] getAccountNames() {
mAccountManager = AccountManager.get(this);
Account[] accounts = mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
names = new String[accounts.length];
for (int i = 0; i < names.length; i++) {
names[i] = accounts[i].name;
}
return names;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我打电话时token = GoogleAuthUtil.getToken(context, email,
"scope",它给了我这些错误:
GooglePlayServices not available due to error 1和com.google.android.gms.auth.GooglePlayServicesAvailabilityException: GooglePlayServicesNotAvailable.
现在我的问题是,我是否必须设置任何权限或包含任何库来解决这个问题?什么是范围参数?在他们的博客文章中给出了如何获取令牌以及放入范围的内容的示例,以将范围变量设置为"https://www.googleapis.com/auth/userinfo.profile"但不幸的是我仍然得到相同的错误.
我还为Google API控制台注册了我的应用并启用了G + API,我是否还必须配置其他内容?
我有很多用户向Play控制台报告此崩溃.我测试了它,它有时只出现.崩溃发生在我在ParseApplication类中的这一行中,它扩展了Application类,应该在其他所有之前调用它?
这是它崩溃的线:
Parse.initialize(this, "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXX");
Run Code Online (Sandbox Code Playgroud)
这是崩溃
java.lang.RuntimeException: Unable to create application com.hour.chat.ParseApplication: java.util.ConcurrentModificationException
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4411)
at android.app.ActivityThread.access$1500(ActivityThread.java:145)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1266)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5081)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.util.ConcurrentModificationException
at java.util.LinkedList$LinkIterator.next(LinkedList.java:124)
at com.parse.ParseObject.mergeREST(ParseObject.java:928)
at com.parse.ParseUser.mergeREST(ParseUser.java:285)
at com.parse.OfflineStore$13$2.then(OfflineStore.java:765)
at com.parse.OfflineStore$13$2.then(OfflineStore.java:762)
at com.parse.Task$10.run(Task.java:448)
at com.parse.Task$ImmediateExecutor.execute(Task.java:673)
at com.parse.Task.completeImmediately(Task.java:444)
at com.parse.Task.continueWith(Task.java:318)
at com.parse.Task.continueWith(Task.java:329)
at com.parse.Task$8.then(Task.java:381)
at com.parse.Task$8.then(Task.java:373)
at com.parse.Task$11.run(Task.java:481)
at com.parse.Task$ImmediateExecutor.execute(Task.java:673)
at com.parse.Task.completeAfterTask(Task.java:477)
at com.parse.Task.continueWithTask(Task.java:353)
at com.parse.Task.onSuccess(Task.java:373)
at com.parse.Task.onSuccess(Task.java:393)
at com.parse.OfflineStore$13.then(OfflineStore.java:762)
at com.parse.OfflineStore$13.then(OfflineStore.java:721) …Run Code Online (Sandbox Code Playgroud) 我总是得到"RESULT_DEVELOPER_ERROR = 5 - 提供给API的无效参数",当我尝试使用
String purchaseToken = "inapp:" + getPackageName() + ":" + productId;
int response = 0;
try {
response = mService.consumePurchase(3, getPackageName(), purchaseToken);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
出于这个原因,我总是只能购买一次.但是,我需要能够更频繁地进行购买.我一直试图解决这个问题2天,但没有成功.:/
使用SKU"android.test.purchased"制作和消费购买完全正常,但是只要我使用生产密钥导出.apk并添加实时SKU,购买只会出现一次,然后再也不会出现.
这里有更多细节