當前位置:編程學習大全網 - 編程語言 - 為什麽部署在coding上的pages會支持SSL

為什麽部署在coding上的pages會支持SSL

為什麽部署在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')

  • 上一篇:請過來人給我壹盞明燈
  • 下一篇:法國藝術留學熱門專業介紹 怎樣申請法國藝術專業留學
  • copyright 2024編程學習大全網