[英]Google cloud endpoints (app engine) + oauth2 integration with android
I am trying to integrate google app engine cloud endpoints API with android. 我正在尝试将google app引擎云终结点API与android集成。
I have followed this links for the same: 我也遵循以下链接:
unable to connect to my google endpoints with my service object 无法使用我的服务对象连接到我的Google端点
https://cloud.google.com/appengine/docs/java/endpoints/consume_android https://cloud.google.com/appengine/docs/java/endpoints/consume_android
Java based Google App Engine, Android and authentication oauth2 基于Java的Google App Engine,Android和身份验证oauth2
Here is my android app side code and app engine endpoints code: 这是我的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();
}
}
But getting error "IOException: com.google.android.gms.auth.GoogleAuthException: Unknown com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException". 但是出现错误“ IOException:com.google.android.gms.auth.GoogleAuthException:未知com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException”。
If we don't use oAuth2 service (User user) then it is working correct. 如果我们不使用oAuth2服务(用户),则说明该服务工作正常。 Also suggest some useful links.
还建议一些有用的链接。
Problem resolved: Was using wrong SHA1 to create android-client-id. 解决的问题:使用错误的SHA1创建android-client-id。 This link helped me to identify my error:
该链接帮助我确定了我的错误:
" Google Endpoints - Android GoogleAuthIOException Tic Tac Toe - Removed clientIds " “ Google端点-Android GoogleAuthIOException井字游戏-删除了clientIds ”
Note: debug.keystore file can be found in c:\\Users\\ .android\\ 注意:debug.keystore文件可以在c:\\ Users \\ .android \\中找到
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.