Ich habe ein Problem mit meinem Projekt, wo ich Google Cloud Endpoints mit Android verbinden möchte. Ich bin immer noch die gleichen Fehler:Fehler mit Endpunkten in Android: GoogleAuthIOException
05-12 21:50:23.995: W/System.err(17739): com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException
05-12 21:50:23.995: W/System.err(17739): at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:224)
05-12 21:50:24.000: W/System.err(17739): at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:888)
05-12 21:50:24.000: W/System.err(17739): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:407)
05-12 21:50:24.000: W/System.err(17739): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:340)
05-12 21:50:24.000: W/System.err(17739): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:458)
05-12 21:50:24.000: W/System.err(17739): at com.example.endpointstutorial_android.MainActivity$QueryScoresTask.doInBackground(MainActivity.java:74)
05-12 21:50:24.005: W/System.err(17739): at com.example.endpointstutorial_android.MainActivity$QueryScoresTask.doInBackground(MainActivity.java:1)
05-12 21:50:24.005: W/System.err(17739): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-12 21:50:24.005: W/System.err(17739): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-12 21:50:24.005: W/System.err(17739): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-12 21:50:24.005: W/System.err(17739): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-12 21:50:24.005: W/System.err(17739): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-12 21:50:24.005: W/System.err(17739): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-12 21:50:24.005: W/System.err(17739): at java.lang.Thread.run(Thread.java:856)
05-12 21:50:24.005: W/System.err(17739): Caused by: com.google.android.gms.auth.GoogleAuthException: Unknown
05-12 21:50:24.005: W/System.err(17739): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
05-12 21:50:24.005: W/System.err(17739): at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:192)
05-12 21:50:24.010: W/System.err(17739): at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:217)
05-12 21:50:24.010: W/System.err(17739): ... 13 more`
Meine Android Code:
public class MainActivity extends Activity {
private static final String PREF_ACCOUNT_NAME = "pref.account.name";
public static final String AUDIENCE = "server:client_id:660102392535.apps.googleusercontent.com";
SharedPreferences settings;
GoogleAccountCredential credential;
String accountName;
static final int REQUEST_ACCOUNT_PICKER = 2;
Myendpoint service;
void chooseAccount() {
startActivityForResult(credential.newChooseAccountIntent(),
REQUEST_ACCOUNT_PICKER);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
credential = GoogleAccountCredential
.usingAudience(
this,AUDIENCE);
settings = getSharedPreferences("SafeAndroid", 0);
setAccountName(settings.getString(PREF_ACCOUNT_NAME, null));
Myendpoint.Builder builder = new Myendpoint.Builder(
AndroidHttp.newCompatibleTransport(), new GsonFactory(),
credential);
service = builder.build();
if (credential.getSelectedAccountName() != null) {
Toast.makeText(getApplicationContext(),
"logged as: " + credential.getSelectedAccountName(), 5000)
.show();
sendRequest();
} else {
chooseAccount();
}
}
private class QueryScoresTask extends AsyncTask<Void, Void, Void> {
Context context;
public QueryScoresTask(Context context) {
this.context = context;
}
protected Void doInBackground(Void... unused) {
Log.v("AAAAA", "2");
try {
MyEntity e = service.myentity().get().execute();
Log.v("AAAAA", e.toString() + "");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
private void setAccountName(String accountName) {
SharedPreferences.Editor editor = settings.edit();
editor.putString(PREF_ACCOUNT_NAME, accountName);
editor.commit();
credential.setSelectedAccountName(accountName);
this.accountName = accountName;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_ACCOUNT_PICKER:
if (data != null && data.getExtras() != null) {
String accountName = data.getExtras().getString(
AccountManager.KEY_ACCOUNT_NAME);
if (accountName != null) {
setAccountName(accountName);
SharedPreferences.Editor editor = settings.edit();
editor.putString(PREF_ACCOUNT_NAME, accountName);
editor.commit();
Toast.makeText(
getApplicationContext(),
"logged as: " + credential.getSelectedAccountName(),
5000).show();
sendRequest();
}
}
break;
}
}
private void sendRequest() {
QueryScoresTask a = new QueryScoresTask(this);
a.execute();
}
}
Und mein Endpunkt Code:
@Api(name = "myendpoint", version = "v1",description = "This retrieves an instance of MyEntity.", clientIds = {
"660102392535.apps.googleusercontent.com", "660102392535-dobseln3gde8e6lqnd2v80l3oh6mm1nh.apps.googleusercontent.com" }, audiences = { "660102392535.apps.googleusercontent.com" })
public class MyEndpoint {
@ApiMethod(httpMethod = "GET", name = "myentity.get", path = "myentity/get")
public MyEntity getEntity(User user) {
MyBusinessClass myBusinessClass = new MyBusinessClass();
MyEntity myEntity = myBusinessClass.getMyEntity();
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity device = new Entity("gcmid", "keyname");
device.setProperty("account", user.getEmail());
device.setProperty("device", "idtelefonu1");
datastore.put(device);
return myEntity;
}
}
Ich habe gelesen, dass einige Leute dieses Problem hatte, aber tat nicht schreiben, wie man es löst. Ich habe einen neuen debug.key erstellt und bekomme einen neuen sha1, aber es funktioniert nicht. Auch versucht, neues Android-Projekt mit neuem Paket zu erstellen - nicht gearbeitet.
hellow @ user1262348 Ich habe das gleiche Problem wie Sie finden Fehler mit Endpunkten in Android: GoogleAuthIOException wenn Sie irgendeine Lösung dann bitte helfen Sie mir. –