我最近开始使用Google App Engine.我打算使用Flask来提供网页和端点API,最好使用Endpoints-Proto-Datastore来处理其他所有内容.
从一开始,GAE上的非Google身份验证机制似乎需要一些工作.我很感激到目前为止我发现的任何问题:
自定义验证
如果您可以将Open ID提供程序编写为应用程序的一部分,请使用类似Python-OpenID的内容,并在同一工作流程中实现使用者,以使其看起来像常规登录.这样,它可以很好地集成到GAE Users API提供的内容中.我猜这是否正确,users.get_current_user()将正常工作.
如果你想跳过编写自己的OpenID提供程序,而是使用与NDB集成的Flask-Login编写一个电子邮件/密码auth系统,那也应该没问题.但是,GAE文档中有一些令人费解的信息说我可以像这样实例化一个用户对象:
user = users.User("XYZ@XYZ.com")
但是,(这里没有user.put()方法)a users.get_current_user()仍然返回None.那么构建用户对象的用途是什么呢?
端点授权
在针对Endpoint-Proto-Datastore滚动API的方法装饰器中包含user = required时,OAuth似乎立即起作用 - 在API explorer中测试它时所要做的就是打开OAuth 2.0开关并选择一个有效的Oauth 2.0范围.那么这是否意味着如果我们实现一个与User API正确集成的OpenID提供程序,那么使用端点API的OAuth魔法是不够的?
在这里,似乎构建用户对象无助于满足身份验证要求.
自定义身份验证/另一个OpenID实现如何与Endpoint API身份验证/授权一起使用?
我尝试在屏幕上创建一个菜单,该菜单将在卫星模式和地形中显示地图。
我的代码:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_MyLocation:
//startActivity(new Intent(this, MyLocation.class));
return(true);
case MENU_LocationCar:
startActivity(new Intent(this, Gps.class));
return(true);
case MENU_Satellite:
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
return(true);
case MENU_Terrain:
map.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
return(true);
}
return(super.onOptionsItemSelected(item));
}
Run Code Online (Sandbox Code Playgroud) 试图让用户选择在我的应用程序中选择谷歌地图(sdk)和苹果地图(mapkit).该应用程序没有使用ARC.崩溃场景(ios 6.0/6.1):1.进入谷歌地图(模态控制器).2.退出谷歌地图(解雇模态).3.将我的应用程序更改为apple maps(mapkit).4.输入apple maps(模态控制器).
应用程序崩溃,我得到:[EAGLContext setCurrentContext:]
如果我不在dealloc中释放谷歌地图,则不会发生错误,但它可能会导致内存泄漏.我在viewDidLoad中保留地图并在dealloc中释放地图.
有人可以帮忙吗?谢谢,Tomer
1 0x0a041324 in -[VGLGPU init] ()
2 0x0a041032 in __24+[VGLGPU sharedInstance]_block_invoke_0 ()
3 0x03b52014 in _dispatch_client_callout ()
4 0x03b4409f in dispatch_once_f ()
5 0x03b44061 in dispatch_once ()
6 0x0a040fef in +[VGLGPU sharedInstance] ()
7 0x09fab26b in -[VKMainLoop updateLinkState] ()
8 0x09fabb02 in -[VKMainLoop removeCanvas:] ()
9 0x09f9f2aa in -[VKScreenCanvas _updateDisplayStatus:] ()
10 0x09f9f3fb in -[VKScreenCanvas setNeedsDisplay] ()
11 0x027bc03d in -[UIView initWithFrame:] ()
12 0x09f75658 in -[VGLScreenCanvas initWithFrame:context:] ()
15 0x09f907e7 …Run Code Online (Sandbox Code Playgroud) 我有一个已安装Google+的Android应用程序,我想知道是否可以使用此连接来验证Google AppEngine端点.
Google示例代码是:
settings = getSharedPreferences(TAG, 0);
credential = GoogleAccountCredential.usingAudience(this, ClientCredentials.AUDIENCE);
setAccountName(settings.getString(PREF_ACCOUNT_NAME, null));
Tictactoe.Builder builder = new Tictactoe.Builder(
AndroidHttp.newCompatibleTransport(), new GsonFactory(),
credential);
service = builder.build();
Run Code Online (Sandbox Code Playgroud)
所以这很好,但我正在重新进行身份验证.我可以以任何方式利用PlusClient来避免创建更多凭据吗?
谢谢
google-app-engine android oauth-2.0 google-plus google-cloud-endpoints