我正在尝试将google app引擎云终结点API与android集成。
这是我的Android应用程式辅助程式码和应用程式引擎端点程式码:
**<Main activity>** @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Profile profile = new Profile(); profile.setDisplayName("Alex roger"); profile.setAge(49l); new EndpointsAsyncTask(this).execute(profile); } **<EndpointAsyncTask>** public class EndpointsAsyncTask extends AsyncTask<Profile, Void, Profile> { private MyApi myApiService; private Context context; SharedPreferences settings; GoogleAccountCredential credential; private static final String PREF_ACCOUNT_NAME = "PREF_ACCOUNT_NAME"; public EndpointsAsyncTask(Context context) { this.context = context; } @Override protected Profile doInBackground(Profile... params) { Profile profile = params[0]; try { settings = context.getSharedPreferences(PREF_ACCOUNT_NAME, Context.MODE_PRIVATE); credential = GoogleAccountCredential.usingAudience(context, "server:client_id:<web-client-id>.apps.googleusercontent.com"); credential.setSelectedAccountName("<myemail_logged_in>@gmail.com"); MyApi.Builder builder = new MyApi.Builder(AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), credential); builder.setApplicationName(context.getPackageName()); builder.setRootUrl("https://<my-app-id>.appspot.com/_ah/api/"); myApiService = builder.build(); return myApiService.saveProfile(profile.getAge(), profile.getDisplayName()).execute(); } catch (IOException e) { Log.e("IOException", String.valueOf(e.getCause() +" " +e)); } catch (Exception e) { Log.e("Exception", e+""); } return profile; } @Override protected void onPostExecute(Profile result) { Log.e("Display Name", result.getDisplayName()); } } **<MyEndpoint>** @Api( name = "myApi", version = "v1", namespace = @ApiNamespace( ownerDomain = "backend.endpoint", ownerName = "backend.endpoint", packagePath = "" ), scopes = {Constant.API_EMAIL_SCOPE}, clientIds = {"<web-client-id>.apps.googleusercontent.com", "<android-client-id>.apps.googleusercontent.com", Constant.API_EXPLORER_CLIENT_ID}, audiences = {"<web-client-id>.apps.googleusercontent.com"} ) public class MyEndpoint { @ApiMethod(name = "saveProfile",path = "saveProfile", httpMethod = ApiMethod.HttpMethod.POST) public Profile saveProfile(@Named("name") String name, @Named("age") long age, User user) { Profile profile = new Profile(name,age); ofy().save().entity(profile).now(); return profile; } @ApiMethod(name = "saveProfile1",path = "saveProfile1", httpMethod = ApiMethod.HttpMethod.POST) public Profile saveProfile1(@Named("name") String name, @Named("age") long age) { Profile profile = new Profile(name,age); ofy().save().entity(profile).now(); return profile; } } **<Profile.class>** @Entity @Cache public class Profile { String displayName; @Id long age; private Profile(){} public Profile(final String displayName,final long age){ this.displayName = displayName; this.age = age; } public String getDisplayName() { return displayName; } public long getAge() { return age; } } **<OfyService>** public class OfyService { static { factory().register(Profile.class); } public static Objectify ofy() { return ObjectifyService.ofy(); } public static ObjectifyFactory factory() { return ObjectifyService.factory(); } }
但是出现错误“ IOException:com.google.android.gms.auth.GoogleAuthException:未知com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException”。
如果我们不使用oAuth2服务(用户),则说明该服务工作正常。还建议一些有用的链接。
解决的问题:使用错误的SHA1创建android-client-id。该链接帮助我确定了我的错误
注意:debug.keystore文件可以在c:\ Users \ .android \中找到