如题所述
第1个回答 2017-01-16
为什么部署在coding上的pages会支持SSL
关注leancloud已经有一段时间了,其宣布的众多开发语言支持,以及SMS, 对象存储, 用户管理及鉴权,推送,聊天等服务对于开发目前主流的移动应用来说,吸引力很大。我们开发的不同移动应用,需要去维护不同的管理后台和服务,开发起来重复而繁琐,如果leancloud能够帮助我们减轻这些工作,那真是物超所值。
为了将应用迁移到leancloud的方案大概如下:
使用leancloud作为后端存储,用户管理和鉴权引擎;
使用python开发一个管理界面, 来帮助管理员编辑文章,发布信息;
使用js, oc作为前端语言来开发用户界面;
在第二步的时候, 我们希望先试验下如下两个简单的user cases:
创建若干个对象,存储在leancloud中;
注册一个用户,确定注册结果,并能验证提供的手机和邮箱;
就是这么两个最简单的用例,一整个晚上下来,居然没有搞定。 首先,除了官方文档,leancloud基本很难看到任何其它形式的文档,比如FAQ, 论坛,社区,stackoverflow, 反正google不出来,其次,就是这仅有的官方文档,也是坑爹啊, 以下是我从官方文档上copy的代码片段,几乎未做修改。
# -*- coding: utf-8 -*-
#coding=utf-8
import leancloud
APP_ID='temv66wvy83zurm3710wt9kir41zaza5gfu0gkhzzcf4a1yv'
APP_KEY='00zuyjgtcvjs31qy7ysktd43fevoblt4e4yx2yjf8gt46q8d'
MASTER_KEY='82irmrurzr9ib2axiputuh6ul8b9zozs7qbcfpchf0t2ts80'
leancloud.init(APP_ID, "%s/%s" % (APP_KEY, MASTER_KEY))
user = leancloud.User()
user.set("username", "admin")
user.set("password", "admin")
user.set("email", "")
# other fields can be set just like with leancloud.Object
user.set("phone", "415-392-0202")
try:
user.sign_up()
except Exception, e:
print e
# Hooray! Let them use the app now.
问题1: SSL InsecurePlatformWarning
在Mac OS和Linux上运行该程序,用户注册失败,并会首先观察到如下的警告:
/usr/lib/python2.7/site-packages/requests-2.6.0-py2.7.egg/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see .
InsecurePlatformWarning
不过一番查找后发现这好像是urllib3的一个通用问题,可以按照如下方法来解决。但是如此通用的问题,居然连一个FAQ都看不到。
$ pip install pyopenssl ndg-httpsclient pyasn1
问题2: sign_up()报告401错误
解决问题1以后,sign_up()会一直报告401错误(unauthorized), 经过近一个小时的定位,发现该错误由leancloud初始化函数导致, 编程指南上的用法如下:
leancloud.init(APP_ID, "%s/%s" % (APP_KEY, MASTER_KEY))
但是参考手册上确是这么写的:
leancloud.client.init(APP_ID, APP_KEY, MASTER_KEY)
两个方式都不会报告语法错,但是前者确好像不能正常工作,查了好久才找到后面的API, 坑爹啊。
问题3: sign_up()允许重复注册
以上测试代码,连续执行两次,居然都成功了,并且在leancloud后台能看到两条相同的用户纪录。sign_up()默认居然可以重复注册?找了好久,发现应用选项中可以配置启用注册用户邮箱验证等选项,勾选了以后,第二次调用sign_up报错。
问题4: sign_up()无法获得失败原因
捕获到sign_up()异常后,本想打印该异常来获得失败原因,结果却导致如下异常:
Traceback (most recent call last):
File "test1.py", line 23, in <module>
print e
UnicodeEncodeError: 'ascii' codec can't encode characters in position 6-16: ordinal not in range(128)
问题5: Python sdk没有相关的API来验证注册用户的邮箱或者手机
用户sign_up以后,可以看到leancloud应用后台的_user表中会有该用户信息,同时还有验证邮箱的链接,但是我如果在自己的python后台中提供这个功能呢?百事不得其解。
问题6: 官方文档的语法错误
以下是leancloud Python SDK编程指南的例程, 可以看出第五行应该是game_score.save()而不是game.save()
game_score = GameScore()
game_score.set('score', 42) # or game_score.score = 42
game_score.set('cheatMode', False)
game_score.set('playerName', 'Marvin')
game.save()
# 还可以通过关键字参数,在创建对象的同时进行赋值
game_score = GameScore(score=42, playerName='Marvin')
关注leancloud已经有一段时间了,其宣布的众多开发语言支持,以及SMS, 对象存储, 用户管理及鉴权,推送,聊天等服务对于开发目前主流的移动应用来说,吸引力很大。我们开发的不同移动应用,需要去维护不同的管理后台和服务,开发起来重复而繁琐,如果leancloud能够帮助我们减轻这些工作,那真是物超所值。
为了将应用迁移到leancloud的方案大概如下:
使用leancloud作为后端存储,用户管理和鉴权引擎;
使用python开发一个管理界面, 来帮助管理员编辑文章,发布信息;
使用js, oc作为前端语言来开发用户界面;
在第二步的时候, 我们希望先试验下如下两个简单的user cases:
创建若干个对象,存储在leancloud中;
注册一个用户,确定注册结果,并能验证提供的手机和邮箱;
就是这么两个最简单的用例,一整个晚上下来,居然没有搞定。 首先,除了官方文档,leancloud基本很难看到任何其它形式的文档,比如FAQ, 论坛,社区,stackoverflow, 反正google不出来,其次,就是这仅有的官方文档,也是坑爹啊, 以下是我从官方文档上copy的代码片段,几乎未做修改。
# -*- coding: utf-8 -*-
#coding=utf-8
import leancloud
APP_ID='temv66wvy83zurm3710wt9kir41zaza5gfu0gkhzzcf4a1yv'
APP_KEY='00zuyjgtcvjs31qy7ysktd43fevoblt4e4yx2yjf8gt46q8d'
MASTER_KEY='82irmrurzr9ib2axiputuh6ul8b9zozs7qbcfpchf0t2ts80'
leancloud.init(APP_ID, "%s/%s" % (APP_KEY, MASTER_KEY))
user = leancloud.User()
user.set("username", "admin")
user.set("password", "admin")
user.set("email", "")
# other fields can be set just like with leancloud.Object
user.set("phone", "415-392-0202")
try:
user.sign_up()
except Exception, e:
print e
# Hooray! Let them use the app now.
问题1: SSL InsecurePlatformWarning
在Mac OS和Linux上运行该程序,用户注册失败,并会首先观察到如下的警告:
/usr/lib/python2.7/site-packages/requests-2.6.0-py2.7.egg/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see .
InsecurePlatformWarning
不过一番查找后发现这好像是urllib3的一个通用问题,可以按照如下方法来解决。但是如此通用的问题,居然连一个FAQ都看不到。
$ pip install pyopenssl ndg-httpsclient pyasn1
问题2: sign_up()报告401错误
解决问题1以后,sign_up()会一直报告401错误(unauthorized), 经过近一个小时的定位,发现该错误由leancloud初始化函数导致, 编程指南上的用法如下:
leancloud.init(APP_ID, "%s/%s" % (APP_KEY, MASTER_KEY))
但是参考手册上确是这么写的:
leancloud.client.init(APP_ID, APP_KEY, MASTER_KEY)
两个方式都不会报告语法错,但是前者确好像不能正常工作,查了好久才找到后面的API, 坑爹啊。
问题3: sign_up()允许重复注册
以上测试代码,连续执行两次,居然都成功了,并且在leancloud后台能看到两条相同的用户纪录。sign_up()默认居然可以重复注册?找了好久,发现应用选项中可以配置启用注册用户邮箱验证等选项,勾选了以后,第二次调用sign_up报错。
问题4: sign_up()无法获得失败原因
捕获到sign_up()异常后,本想打印该异常来获得失败原因,结果却导致如下异常:
Traceback (most recent call last):
File "test1.py", line 23, in <module>
print e
UnicodeEncodeError: 'ascii' codec can't encode characters in position 6-16: ordinal not in range(128)
问题5: Python sdk没有相关的API来验证注册用户的邮箱或者手机
用户sign_up以后,可以看到leancloud应用后台的_user表中会有该用户信息,同时还有验证邮箱的链接,但是我如果在自己的python后台中提供这个功能呢?百事不得其解。
问题6: 官方文档的语法错误
以下是leancloud Python SDK编程指南的例程, 可以看出第五行应该是game_score.save()而不是game.save()
game_score = GameScore()
game_score.set('score', 42) # or game_score.score = 42
game_score.set('cheatMode', False)
game_score.set('playerName', 'Marvin')
game.save()
# 还可以通过关键字参数,在创建对象的同时进行赋值
game_score = GameScore(score=42, playerName='Marvin')
第2个回答 2017-01-15
为什么部署在coding上的pages会支持SSL
coding 用 let's encrypt 申请了证书
为什麼绿锁会消失,因为 coding 的 bug 。。。Coding Pages
老老实实用 github 或者 gitlab 吧。
coding 用 let's encrypt 申请了证书
为什麼绿锁会消失,因为 coding 的 bug 。。。Coding Pages
老老实实用 github 或者 gitlab 吧。