微信公眾帳號驗證

來源:互聯網
上載者:User

 前段時間申請了一個公用帳號,想要在伺服器端編程實現自動回複,同時也接觸一下關於django編程,以繼續發揚我在python的web道路。終於到現在,我才有時間​將這個過程記錄下來,具體如下:

首先明確目標——成為公眾號第三方開發人員,通過訊息API認證。

使用的語言和架構 :python的django

主機的平台:             sae雲平台

平台:                 公眾帳號

 

當然,先要閱讀的訊息介面,其是通過伺服器擷取使用者的回複,用get請求發送到我的伺服器,然後我給予回應。所以只需要簡單的編程就可以完成驗證了。

 

步驟1:申請公眾帳號,需要填寫若干資料,傳送門http://mp.weixin.qq.com ,填寫好後,則可以閱讀其開放API文檔,裡面有提到如何驗證: 發送一個echochar, 原樣返回就可以了。但是其中要驗證該get請求是否來自伺服器,則需要詳細核對產生的hash值。文檔裡面有範例php檔案,可以直接下載研讀。

 

 

步驟2:在sae上搭建應用,先有帳號,然後建立一個app,選擇python或者php,如果選擇了php可以使用提供的代碼,google一下也會有很詳細的教程。如果選用python,也可以參考本文或者文章後面的連結。

 

在sae上搭建應用,需要在本地建立一個版本庫,所以要在sae管理平台上先初始化第一個版本,這個版本什麼代碼都沒有,只有兩個設定檔config.yaml,index.wsgi,用svn check out到本地的工作目錄。就可以看到有一個名為"1"的檔案夾,也就是第一個版本。然後我們可以在該檔案夾內構建django應用了,如果你安裝好了django,那麼可以到目錄"1"下,然後在命令列運行 

 

 
  1. django-admin.py startproject mysite 

mysite是你的應用的名字,運行命令時要予以更換。

 

然後就建立了本地工作目錄,可是這個適合建立的目錄處於1下面,我們最終要達到下面這個樣子:tree命令察看分類樹

650) this.width=650;" src="http://www.wiz.cn/unzip/3eb90c0e-f584-11e0-a072-00237def97cc/b43de5cb-89ce-d7ec-7550-feeab9ae522b.5202/index_files/7c8bcebe8e6b2dd52d59a322f4647c02.png" data_ue_src="http://www.wiz.cn/unzip/3eb90c0e-f584-11e0-a072-00237def97cc/b43de5cb-89ce-d7ec-7550-feeab9ae522b.5202/index_files/7c8bcebe8e6b2dd52d59a322f4647c02.png" alt="" />

 

所以要將mysite下的檔案或目錄全部移動到1之下,因為mysite/暫時未納入版本控制,所以可以手動拷貝後用svn將檔案或目錄納入svn目錄。故而形成manage.py在1之下,其他django檔案在mysite這裡是scnuwriter)之下。

 

   

  步驟3: 在本地架設好django應用,然後用svn commit 命令上傳到sae伺服器。這裡需要參考sae的文檔,關於搭建python開發環境的操作。有疑問的可以察看這裡。總之就是要配置好各種檔案,上傳代碼就行了。

 

步驟4: 編寫好驗證的代碼,代碼如下 view.py 檔案:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # -*- coding: utf-8 -*-   from django.http import HttpResponse   from django.template import RequestContext, Template   from django.views.decorators.csrf import csrf_exempt   from django.utils.encoding import smart_str, smart_unicode  import hashlib     TOKEN = "mytoken"   # to verify the API server           def checkSignature(request):       global TOKEN       signature = request.GET.get("signature"None)     timestamp = request.GET.get("timestamp"None)     nonce = request.GET.get("nonce"None)     echoStr = request.GET.get("echostr",None)     token = TOKEN       tmpList = [token,timestamp,nonce]       tmpList.sort()       tmpstr = "%s%s%s" % tuple(tmpList)       tmpstr = hashlib.sha1(tmpstr).hexdigest()     if tmpstr == signature:          return HttpResponse(echoStr)     else:           return None

當然如果不怕安全性的損失,可以不驗證這是伺服器發來的get請求,而直接在第17行後面return HttpResponse(echoStr) 就可以了。從的樣本php檔案中可以看出來,它將驗證封裝在一個專門的函數中供調用。但其實驗證的內容與返回的東西無關。很多教程裡面寫的是return echoStr,我搞了半天才發現不行,返回的不是一個http響應,故而需要對echoStr做一個HttpResponse的封裝。

 

另外需要在url設定裡面進行設定,然後在發送驗證時填寫url的時候填寫對應的url。例如,在django工作目錄下面修改url.py如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 from django.conf.urls import patterns, include, url   # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin.autodiscover() from scnuwriter.views import *   urlpatterns = patterns('',     # Examples:     # url(r'^$', 'scnuwriter.views.home', name='home'),     # url(r'^scnuwriter/', include('scnuwriter.foo.urls')),     url(r'^$', checkSignature), )

第12行表示,在url中什麼也不加,如http://scnuwriter.sinaapp.com 這樣就可以訪問checkSignature了。每次在本地目錄做了更改,都需要在終端中用svn命令commit一下,這個就不用多說了。

 

步驟4:驗證

驗證的原理很簡單,就是確認這個東西是伺服器發來的,而且把這個東西原樣返回就行了。登陸公眾平台,填寫url和token在本例子中就是程式中的TOKEN,也就是"mytoken"),按驗證就可以了。

650) this.width=650;" src="http://www.wiz.cn/unzip/3eb90c0e-f584-11e0-a072-00237def97cc/b43de5cb-89ce-d7ec-7550-feeab9ae522b.5202/index_files/f82cc46a4bb22d15151795284be52e5e.jpg" data_ue_src="http://www.wiz.cn/unzip/3eb90c0e-f584-11e0-a072-00237def97cc/b43de5cb-89ce-d7ec-7550-feeab9ae522b.5202/index_files/f82cc46a4bb22d15151795284be52e5e.jpg" alt="" />

成功會提示成功成為開發人員,如果失敗,會提示你你的伺服器響應不正確。

650) this.width=650;" src="http://www.wiz.cn/unzip/3eb90c0e-f584-11e0-a072-00237def97cc/b43de5cb-89ce-d7ec-7550-feeab9ae522b.5202/index_files/7851a041e4435b623f074b87e0bbca2a.png" data_ue_src="http://www.wiz.cn/unzip/3eb90c0e-f584-11e0-a072-00237def97cc/b43de5cb-89ce-d7ec-7550-feeab9ae522b.5202/index_files/7851a041e4435b623f074b87e0bbca2a.png" alt="" />

ok,搞定。結果如下,可以進行下一步的公眾帳號的開發了!

 

參考連結:

 介面文檔 

啟用介面php),通過驗證

機器人python

django 手冊

sae python部署

 

by bibodeng 2013-4-14

本文出自 “ugeek bibodeng” 部落格,請務必保留此出處http://bibodeng.blog.51cto.com/2646046/1177874

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.