您好,登錄后才能下訂單哦!
小編給大家分享一下微信開發(fā)如何獲取用戶頭像,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
前段時間寫了關(guān)于微信支付接入,順便就把獲取用戶昵稱,頭像的方式也歸納下,這個其實挺簡單的,具體的方法看官方文檔即可。這里只提幾個重點。
scope參數(shù)
看過微信文檔的話,微信的規(guī)定是,對于scope參數(shù),如果需要獲取用戶信息的話,scope參數(shù)為snsapi_userinfo。但是我接下來,使用過一次userinfo,實際上用snsapi_base也可以獲得用戶信息,一模一樣的返回值,對于獲取頭像和昵稱完全沒有任何問題
獲取頭像
獲取頭像其實有一點麻煩的就是跨域問題。要解決這個跨域問題,可以采用設(shè)置一個代理服務(wù)器,或者通過配置相關(guān)服務(wù)器(ngix,apache)來解決。這個網(wǎng)上方法很多,我這里說的是不通過配置服務(wù)器的方法。
在我們的項目中,我并不想使用配置一個web服務(wù)器或者代理,因為我們是游戲服務(wù)器,我們是自己實現(xiàn)的,并沒有使用什么web服務(wù)器框架,那么這種情況下,我們解決跨域的問題就是由我們的服務(wù)器后端直接對跨域資源發(fā)起請求,在獲得對應(yīng)的資源后,再返回前端。OK,這就是具體方法
具體實現(xiàn)時,其實很簡單,獲取到頭像的url后,直接發(fā)起一個http請求并獲取返回即可。
注意:http請求方式為“GET”
另外需要提的一點是,對response的返回,要直接使用stream.Read,如果使用streamReader,以文本方式讀取字節(jié)流讀出來的數(shù)據(jù)是無法轉(zhuǎn)成圖片的。(我查閱過MSDN關(guān)于這兩個接口的說明,只是讀取時一個是文本形式,一個是字節(jié)流形式,其他并沒有過多的說有什么區(qū)別)。
然后記得將字節(jié)流以Base64方式轉(zhuǎn)換,交由我們的前端處理
request = HttpWebRequest.Create(url); request.Method = "GET"; response = request.GetResponse(); stream = response.GetResponseStream(); var buffer = new byte[4096]; var num = stream.Read(buffer, 0, 4096); var head = Convert.ToBase64String(buffer, 0, num); stream.Dispose(); response.Close();
上面的代碼有一個問題,我后來才注意到,就是當(dāng)圖片比較大的時候,比如頭像地址最后的參數(shù)是64以上,或是/0(此時返回640*640大小的圖片),這個時候,stream可能一次不能讀取完所有的數(shù)據(jù),所以修改代碼為
var request = HttpWebRequest.Create(url); request.Method = "GET"; var response = request.GetResponse(); var stream = response.GetResponseStream(); var buffer = new byte[response.ContentLength]; var num = stream.Read(buffer, 0, (int)response.ContentLength); var total = num; while(num > 0) { num = stream.Read(buffer, total, (int)(response.ContentLength - total)); total += num; } head = Convert.ToBase64String(buffer, 0, total);
以上是“微信開發(fā)如何獲取用戶頭像”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。