国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

新浪SEA開放平臺開發(fā)文檔 / 輕應(yīng)用開發(fā)指南

輕應(yīng)用開發(fā)指南

簡介

什么是輕應(yīng)用?

輕應(yīng)用是微博為第三方服務(wù)(H5頁面)接入微博提供的一套基礎(chǔ)框架和接入服務(wù)(Focus On Mobile)。

輕應(yīng)用入口在微博 Page 頁(也叫 Profile 頁、個人主頁),或者微博的卡片(Card)中,由接入方以網(wǎng)頁應(yīng)用的形式開發(fā)。


根據(jù)展示平臺,輕應(yīng)用分為兩種:桌面瀏覽器上通過 iframe 嵌入(以下簡稱 Web 版),微博客戶端內(nèi)通過 Webview 展示(以下簡稱 H5 版)。你的應(yīng)用可以選擇兩種展示平臺之一,也可以二者都支持。

特點(diǎn)

輕應(yīng)用提供符合微博平臺屬性的更多接近用戶的渠道,促進(jìn)用戶與商家雙向關(guān)系的形成,讓用戶更有效發(fā)現(xiàn)并使用服務(wù)。


  • ? 接入便捷。接入方 H5 網(wǎng)頁只需針對微博做少量的兼容工作,就能享受官方客戶端提供的一系統(tǒng)輕應(yīng)用服務(wù),從而為用戶提供更好的體驗(yàn)
  • ? 無需授權(quán)。如果用戶在登錄狀態(tài)訪問應(yīng)用,新的框架將默認(rèn)完成授權(quán),并將 access_token 信息傳遞給接入方。
  • ? 更多的曝光機(jī)會。應(yīng)用上線后會出現(xiàn)在 Page 頁,以及微博 Feed 流的 card 中。支持 linkcard 接入,在微博中得到更好的展示。
  • ? 開發(fā)過程,統(tǒng)一了接入方式和參數(shù)。無論是 Web 版還是 H5 版,客戶端收到的參數(shù)都是相同的,接入方式也基本上都相同。應(yīng)用可以通過瀏覽器 userAgent 來區(qū)分是 Web 版還是 H5 版。
  • ? 支持接入微博支付,一鍵完成商品支付。
  • ? [Web 版]新增應(yīng)用分享和贊。直接將應(yīng)用分享到微博,并生成卡片展示,快速傳播。
  • ? [Web 版]支持未登錄訪問應(yīng)用。未登錄微博也可以瀏覽應(yīng)用,必要的時候通過我們的 JS 客戶端喚起登錄浮層。
  • ? [Web 版]應(yīng)用寬度調(diào)整為 940 px。不支持原來的 760px,原來的 950 px 改為 940px。

輕應(yīng)用場景

有的輕應(yīng)用,更加突出的是內(nèi)頁,如電影、圖書,可能您希望在微博流中直接看到一個卡片,點(diǎn)擊卡片就能直接進(jìn)入到商品詳情頁直接購買;

有的應(yīng)用更突出應(yīng)用首頁,比如網(wǎng)頁游戲、單頁應(yīng)用,它們?nèi)肟谖ㄒ?,點(diǎn)開應(yīng)用首頁進(jìn)去就能玩;

或者二者兼而有之,都是可以的。


應(yīng)用范例

網(wǎng)上4S店(Web & H5版 均接入):

pageapp4s221.png
pageapp4smobile221.png

H5 版本:

友寶、愛影客


更多輕應(yīng)用的介紹,請點(diǎn)擊這里。

輕應(yīng)用開發(fā)流程

輕應(yīng)用的開發(fā)大致分為四個步驟:

  • ? 成為微博開發(fā)者
  • ? 應(yīng)用創(chuàng)建
  • ? 應(yīng)用開發(fā)
  • ? 應(yīng)用審核及上線


如下圖所示:

workflow.png

成為微博開發(fā)者

開發(fā) 輕應(yīng)用的第一步,是成為微博公司開發(fā)者。

如果您還不是微博開發(fā)者,請先登錄微博開放平臺,然后進(jìn)入管理中心完善開發(fā)者基本信息和身份認(rèn)證。


基本信息部分,直接選擇開發(fā)者類型為公司,完成表單。填寫完成后,通過郵箱驗(yàn)證就可以開始創(chuàng)建應(yīng)用了。

baseinfo.png


通過身份認(rèn)證,有利于應(yīng)用的審核和各種權(quán)限的申請,請一并認(rèn)真填寫。

id-verify.png

個人開發(fā)者升級為公司開發(fā)者

如果已經(jīng)是個人開發(fā)者,需要進(jìn)入編輯開發(fā)者信息頁面,重新選擇開發(fā)者類型為公司,然后保存資料即可。

應(yīng)用創(chuàng)建

在 Page 輕應(yīng)用介紹頁,點(diǎn)擊創(chuàng)建應(yīng)用按鈕,進(jìn)入創(chuàng)建表單填寫頁面。


page-app-intro.png


完成表單填寫,會自動跳轉(zhuǎn)到應(yīng)用的控制臺,在應(yīng)用控制臺可以進(jìn)一步完善應(yīng)用的基本信息。

編輯應(yīng)用信息

打開應(yīng)用信息->基本信息,可以查看應(yīng)用的基本數(shù)據(jù)。點(diǎn)擊編輯,可以進(jìn)行修改。

測試地址(Web版、H5版)

打開應(yīng)用信息->測試信息,可以看到應(yīng)用的測試地址。因?yàn)閼?yīng)用還沒通過審核并上線到應(yīng)用廣場,這個地址僅限開發(fā)者本人瀏覽訪問。

如果需要其他微博用戶瀏覽,可以將該微博用戶添加到測試帳號里。每個應(yīng)用測試帳號最多添加 15 人。


test-address.png

應(yīng)用通過文案審核并上廣場后,測試帳號自動失效。


升級為輕應(yīng)用

升級主要指的是原來已經(jīng)成功創(chuàng)建了的企業(yè)應(yīng)用、站內(nèi)應(yīng)用或個人版 Page 應(yīng)用,升級為輕應(yīng)用。

由于已經(jīng)創(chuàng)建了應(yīng)用的 appkey,升級主要包含兩個方面:一是微博開放平臺后臺將 appkey 升級為輕應(yīng)用類型;二是應(yīng)用將原來接收的舊參數(shù)改為新的參數(shù)。

應(yīng)用開發(fā)

注:本小節(jié)內(nèi)容包含應(yīng)用開發(fā)的全部細(xì)節(jié),請根據(jù)應(yīng)用的實(shí)際情況選擇。

  • ? 只有內(nèi)頁展示需求的應(yīng)用,請直接看如何接入微博支付部分;
  • ? 只有主頁展示需求的應(yīng)用,請從接收框架參數(shù)部分開始閱讀;
  • ? 兼而有之的,請完全閱讀。


應(yīng)用創(chuàng)建完成后,就需要進(jìn)入應(yīng)用的開發(fā)過程了。應(yīng)用開發(fā)其實(shí)并不復(fù)雜,就是如何處理微博框架傳遞過去的參數(shù),并做相應(yīng)的處理,其間會涉及到幾個問題:


應(yīng)用主頁開發(fā)

  • 接收框架參數(shù)
  • Web 版和 H5 版的區(qū)分
  • Web 版 JavaScript 包的使用
  • H5 版如何調(diào)用微博客戶端的 JS API

應(yīng)用內(nèi)頁開發(fā)

  • 如何接入微博支付
  • 如何接入 linkcard

應(yīng)用升級為輕應(yīng)用

  • 企業(yè)應(yīng)用遷移指南


  • 微博客戶端二維碼規(guī)則

技術(shù)流程

接收框架參數(shù)

應(yīng)用框架會通過 POST 形式,發(fā)送給接入方頁面一個加密后的參數(shù) signed_request, 參數(shù)中包含了 uid、access_token 等信息,如果應(yīng)用需要用到,就需要解密后才能使用。

如果是純展示類應(yīng)用,可以不用理會這個參數(shù)。

有一點(diǎn)需要特別注意,就是參數(shù) signed_request 是 POST 方式傳輸?shù)?,接入方的頁面如果不支?POST 接收,可能會無法正確顯示。


signed_request 的加密方式

signed_request 用小數(shù)點(diǎn)分隔成兩段,小數(shù)點(diǎn)前是校驗(yàn)數(shù)據(jù),小數(shù)點(diǎn)后是真實(shí)數(shù)據(jù)。 校驗(yàn)數(shù)據(jù)用于確保數(shù)據(jù)的有效性,比如沒有被篡改過,只有校驗(yàn)成功的真實(shí)數(shù)據(jù),才是可信的。

這二者都使用了 base64 編碼,因此需要先進(jìn)行數(shù)據(jù)還原。base64 數(shù)據(jù)的部分字符在 HTTP 傳輸?shù)倪^程中可能會被和 URL 中其他字符混淆,因此開發(fā)者拿到的 base64 字符串,都做了特殊處理。因此 base64 解碼之前,需要先將字符串還原為標(biāo)準(zhǔn)的 base64 字符。


還原方式:先根據(jù)字符串長度補(bǔ)上相應(yīng)長度的等號(補(bǔ)上等號后的字符串長度應(yīng)該是 4 的整數(shù)倍),然后將其中所有的 - 替換成 +,所有 _ 替換成 /。


真實(shí)數(shù)據(jù) base64 解碼后,轉(zhuǎn)成 JSON 對象,就是開發(fā)者需要的信息了,下文會詳細(xì)介紹每個參數(shù)。


如何使用校驗(yàn)數(shù)據(jù)?

首先,檢查真實(shí)數(shù)據(jù) base64 解碼后 JSON 中的 algorithm,必須是 HMAC-SHA256。

其次,通過校驗(yàn)數(shù)據(jù)進(jìn)行校驗(yàn),校驗(yàn)方法如下:

  • 校驗(yàn)數(shù)據(jù) base64 解碼后(可能是亂碼的字符,不用管它),保存在變量里,用于后續(xù)對比。
  • 對 base64 解碼之前的數(shù)據(jù),使用應(yīng)用的 app secret 進(jìn)行 sha256 加密,加密后的數(shù)據(jù)和校驗(yàn)數(shù)據(jù) base64 解碼后的結(jié)果必須一致,才能保證數(shù)據(jù)的有效性。

因此,signed_request 的解密方法已經(jīng)可以寫出來了。


使用 SDK 進(jìn)行數(shù)據(jù)解密

微博開放平臺的眾多 SDK 中,PHPSDK 和 JavaSDK 已經(jīng)內(nèi)置了 signed_request 解碼功能,可以直接使用。其他語言需要開發(fā)者自行完成。


使用 PHPSDK 從 signed_request 提取參數(shù)

if(!empty($_POST["signed_request"])){
	$o = new SaeTOAuth( WB_AKEY , WB_SKEY  );
	$data = $o->parseSignedRequest($_REQUEST["signed_request"]);
	if($data == '-2'){
		 die('sign is error!');
	} else {
		$_SESSION['oauth2'] = $data;
	}
}


PHPSDK 解密 signed_request 的方法如下,供其他語言參考

/**
 * 解析 signed_request
 * @param string $signed_request 應(yīng)用框架在加載iframe時會通過向Canvas URL post的參數(shù)signed_request
 * @return array
 */
function parseSignedRequest($signed_request) {

	// 將 $signed_request 參數(shù),用小數(shù)點(diǎn).分隔成數(shù)組,下標(biāo)0的賦值給 $encoded_sig,下標(biāo)1的復(fù)制給 $payload
	list($encoded_sig, $payload) = explode('.', $signed_request, 2);

	// 對 $encoded_sig 進(jìn)行 base64 解碼,然后賦值給 $sig
	$sig = self::base64decode($encoded_sig);

	// 對 $payload 進(jìn)行 base64 解碼,并將字符串轉(zhuǎn)為 JSON 賦值給 $data
	$data = json_decode(self::base64decode($payload), true);

	// 如果 $data 中的 algorithm 不是 HMAC-SHA256,表示數(shù)據(jù)校驗(yàn)出錯,直接返回 -1
	if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') return '-1';

	// 使用 app secret 對 $payload 進(jìn)行 sha256 加密
	$expected_sig = hash_hmac('sha256', $payload, $this->client_secret, true);

	// 如果 sha256 加密后的結(jié)果和 $sig 是一致的,那么 $data 數(shù)據(jù)就沒問題,直接返回給調(diào)用方;否則>表示數(shù)據(jù)校驗(yàn)出錯,返回 -2
	return ($sig !== $expected_sig)? '-2' : $data;
}
/**
* @ignore
*/
function base64decode($str) {
	// 將需要 base64 解碼的字符串,按照字符串長度先補(bǔ)上相應(yīng)的等號(補(bǔ)上等號后的字符串長度應(yīng)該是4>的整數(shù)倍),然后將其中的 - 和 _ 分別替換成 + 和 /,然后對處理后的字符串執(zhí)行 base64 解碼
	return base64_decode(strtr($str.str_repeat('=', (4 - strlen($str) % 4)), '-_', '+/'));
}


signed_request 解密后的格式

未登錄狀態(tài)訪問應(yīng)用參數(shù)

QQ截圖20170209174302.png

8月1日后創(chuàng)建的輕應(yīng)用管理地址默認(rèn)加載appkey的應(yīng)用地址,如第三方有管理地址的需求,請根據(jù)origin返回的字段進(jìn)行二次跳轉(zhuǎn)


登錄狀態(tài)訪問應(yīng)用,自動授權(quán)成功參數(shù)

QQ截圖20170209174315.png


能正確接收參數(shù)以后,應(yīng)用還需要區(qū)分當(dāng)前所處的平臺。

Web版和H5版的區(qū)分

應(yīng)用的基本信息中,可以選擇 Web 版或者 H5 版之一,或者二者都兼容。如果二者都兼容,就有必要區(qū)分 Web 版和 H5 版。

區(qū)分的作用有兩個:一是為了讓不同的設(shè)備下,應(yīng)用可以進(jìn)行適配,以達(dá)到最佳的顯示效果;二是,Web 版和 H5 版調(diào)用的 Javascript 包不一樣,區(qū)分后,可以減少不必要的 JS 代碼。

應(yīng)用目前可以通過瀏覽器的 userAgent 來區(qū)分,當(dāng)前是顯示在 Web 瀏覽器還是微博客戶端中,這也是目前唯一的方式。


Web 版 JavaScript 包的使用

Web 版是通過 iframe 來嵌入接入方應(yīng)用,除了接收框架 POST 的參數(shù),還需要和框架進(jìn)行通訊,比如:iframe 高度自適應(yīng)、獲取父頁面的信息、喚起登錄浮層等。

這些都是通過框架提供的一個 JavaScript 文件來提供的,具體使用方法請閱讀 輕應(yīng)用組件 Web 版組件的調(diào)用。


H5 版如何調(diào)用微博客戶端的 JS API

微博客戶端自從 4.3.0 開始,在 Webview 中新增了 JS API 功能,方便網(wǎng)頁應(yīng)用通過 JS API 調(diào)用一些系統(tǒng)功能,例如:獲取網(wǎng)絡(luò)狀態(tài)、定位信息、掃描二維碼、查看大圖等功能。

詳細(xì)使用方法,請閱讀:輕應(yīng)用組件 H5 版組件的使用。


如何喚起微博支付

目前微博支付只支持線下接入,需要接入的開發(fā)者,請聯(lián)系 wangwei16@staff.weibo.com。

接入微博支付后,可以申請商品類 linkcard 接入。

如何接入 linkcard 解析

注意:目前接入商品類 linkcard 必須先接入微博支付,請聯(lián)系wangwei16@staff.weibo.com 申請接入微博支付。


什么是 linkcard

一條微博中如果包含一個鏈接,將展示為一個短鏈接,如圖:

link.png


如果連該鏈接被解析為包含一個對象數(shù)據(jù)的特殊短鏈,那么該對象數(shù)據(jù)就可以在微博消息流內(nèi)以卡片形式顯示。這種形態(tài)就是微博 消息流 linkcard(鏈接卡片)解析。

被解析的鏈接會被替換為miniCard,顯示上更豐富有力,點(diǎn)擊率更高。在微博正文的下面,一般會解析出 linkcard,可以展示出縮略圖、標(biāo)題、簡介等信息。解析效果如圖:

card.png

linkcard 是接入方網(wǎng)站鏈接在微博上承載特定功能的必要形式,依賴 linkcard,可以實(shí)現(xiàn)視頻鏈接的直接播放、音頻鏈接的直接試聽等效果,以及輕應(yīng)用直接載入。


在用戶分享接入方網(wǎng)站的鏈接到微博上時,我們將通過鏈接特征,識別出該鏈接是否屬于某個輕應(yīng)用接入方。對于輕應(yīng)用接入方的鏈接,我們將調(diào)用該接入方登記的解析回調(diào)接口,獲取事先約定好格式的對象數(shù)據(jù)。這些能成功獲取到對象數(shù)據(jù)的鏈接,就可以在pc端、移動客戶端展示成 linkcard,并實(shí)現(xiàn)用戶點(diǎn)擊后可以完成輕應(yīng)用框架的加載。


優(yōu)點(diǎn):接入方只需按標(biāo)準(zhǔn)、規(guī)范的流程開發(fā)回調(diào)接口即可實(shí)現(xiàn)快速接入。

缺點(diǎn):接入方屬于被動接入,回調(diào)接口有失敗率,可能造成個別鏈接 linkcard 解析不成功。


如何接入 linkcard?

線下提交申請,聯(lián)系 wangwei16@staff.weibo.com。


接入 linkcard 接入方需要做的事情

我們先看看 linkcard 的工作流程:

linkcard-workflow.png


圖中的 1、2 具體描述如下:

1、接入方提供解析長 URL 匹配規(guī)則

長 URL 匹配規(guī)則是一個簡單的正則表達(dá)式,匹配上的長 URL 在轉(zhuǎn)短鏈時會當(dāng)做參數(shù)用來調(diào)用接入方的對象數(shù)據(jù)回調(diào)接口,即圖中的鏈接域名等特征。

例如,我們要解析某商品為 linkcard,則商品的長鏈接 URL 是:http://www.productmall.com/sample/256819,那么長 URL 匹配規(guī)則應(yīng)該是:www.productmall.com/sample/。(請注意,http:// 不包含,可變的商品編號也沒有包含在內(nèi))

2、接入方提供解析對象數(shù)據(jù)回調(diào)接口

該接口由接入方來開發(fā)。微博平臺在通過上面的長 URL 匹配規(guī)則,匹配上的長 URL 在轉(zhuǎn)短鏈時會調(diào)用接入方的這個接口,參數(shù)為匹配上的長 URL。

接入方判斷參數(shù) URL 為一個正確的需要解析為 linkcard 的頁面時,接口返回需要解析的對象數(shù)據(jù),理論上不同的參數(shù) URL 返回不同的對象數(shù)據(jù)。反之,接口返回錯誤,微博平臺將認(rèn)為這個鏈接不是正常的 linkcard 對象,轉(zhuǎn)為普通短鏈,不做 linkcard 解析。


對象數(shù)據(jù)接口

接口請求方式:GET 接口參數(shù):url,符合匹配規(guī)則的長 URL 接口返回值:JSON, JSON數(shù)據(jù)的具體屬性字段見下表:

QQ截圖20170209174337.png

上面的屬性中,類型為 object、object array、media link 的,都是包含下一級屬性的,具體說明如下:

image(media link)

QQ截圖20170209174349.png

tags(object array)

QQ截圖20170209174400.png

例如:

接入方提供的長URL匹配規(guī)則:www.productmall.com/sample/

示例鏈接:http://www.productmall.com/sample/256819

接入方提供的對象數(shù)據(jù)回調(diào)接口:http://www.productmall.com/api/get_data?url=

則我們的調(diào)用實(shí)例將為: http://www.productmall.com/api/get_data?url=http%3a%2f%2fwww.productmall.com%2fsample%2f256819

接入方返回數(shù)據(jù)如下:

(1)不接入官方客戶端二維碼喚起功能

{ 
	"display_name": "這是商品的標(biāo)題", 
	"image": { 
		"url": "http://www.productmall.com/7272.jpg", 
		"width": 120, 
		"height": 120 
	}, 
	"summary": "這是商品的簡介", 
	"url": "http://www.productmall.com/sample/256819.html", 
	"tags": [ 
		{ 
			"display_name": "標(biāo)簽1" 
		} 
	], 
	"create_at": "2012-10-18", 
	"object_type": "product" 
}

(2)接入官方客戶端二維碼喚起功能(假如接入方申請后,開放平臺給接入方分配的域名 id 為1456439003)

{ 
	"display_name": "這是商品的標(biāo)題", 
	"id": "1456439003:www_productmall_com_sample_256819", 
	"image": { 
		"url": "http://www.productmall.com/7272.jpg", 
		"width": 120, 
		"height": 120 
	}, 
	"summary": "這是商品的簡介", 
	"url": "http://www.productmall.com/sample/256819.html", 
	"tags": [ 
		{ 
			"display_name": "標(biāo)簽1" 
		} 
	], 
	"create_at": "2012-10-18", 
	"object_type": "product"
}

企業(yè)應(yīng)用遷移指南(升級為輕應(yīng)用)

企業(yè)應(yīng)用和輕應(yīng)用最直觀的變化,是視覺效果上沒有了夸張的頭部(大頭像、頭圖、Tab等),更專注內(nèi)容的展示。


企業(yè)應(yīng)用升級為輕應(yīng)用,需要做兩件事:

1、應(yīng)用 appkey 升級。將 appkey 加入遷移列表,可以聯(lián)系客服郵箱:weibo_app@vip.sina.com

2、修改應(yīng)用的參數(shù)。


  • 參數(shù)現(xiàn)在改為 POST 傳輸,并且是加密的,如何解密,請參看接收框架參數(shù)部分。
  • 企業(yè)應(yīng)用升級為輕應(yīng)用以后,參數(shù)名也會發(fā)生變化。新舊參數(shù)的對應(yīng)關(guān)系如下:

QQ截圖20170209174414.png

微博客戶端二維碼規(guī)則

使用此規(guī)則生成的二維碼圖片,使用微博客戶端掃描后,可以直接進(jìn)入對象正文頁,而不是內(nèi)置默認(rèn)瀏覽器。區(qū)別請看下圖:


diff.png


測試應(yīng)用規(guī)則(上廣場之前使用):

  • 應(yīng)用首頁生成的二維碼:http://apps.weibo.com/qrcode/test?uid=xxx&appkey=xxx (這里的appkey算法是base62后的appkey)
  • 應(yīng)用內(nèi)頁沒有測試地址,入庫后就是正式地址


正式地址規(guī)則(上廣場后使用):

  • 應(yīng)用首頁生成的二維碼:http://apps.weibo.com/qrcode/app?uid=xxx&appkey=xxx (這里的appkey算法是base62后的appkey)
  • 應(yīng)用內(nèi)頁生成的二維碼:http://apps.weibo.com/qrcode/linkcard?oid=xxx (這里的 oid 是對象入 linkcard 庫后生成的 id)

輕應(yīng)用H5版Demo

請使用微博客戶端掃描下方二維碼查看演示Demo:


8aafa3b9jw1f6verb8silj205n05nt95.jpg


Demo中涉及到的接口詳情詳見以下文檔:


輕應(yīng)用組件文檔:http://open.weibo.com/wiki/輕應(yīng)用H5新版JS


微博支付應(yīng)用接入指南:http://open.weibo.com/wiki/微博支付應(yīng)用接入指南


微博API接口文檔:http://open.weibo.com/wiki/微博API

應(yīng)用審核與上線

應(yīng)用完成開發(fā)后,就需要提交應(yīng)用審核了。進(jìn)入微博開放平臺,登錄后打開應(yīng)用,就可以看到提交審核的入口。

輕應(yīng)用需提交廣場審核,審核后到藍(lán)v的管理中心 -> 設(shè)備管理 -> 應(yīng)用管理 -> 獲取更多應(yīng)用 - > 應(yīng)用廣場 進(jìn)行應(yīng)用安裝,安裝后會生成apps.weibo.com/uid/xxx開頭的地址,請使用此地址在微博內(nèi)進(jìn)行推廣,只有此地址會在微博中自動解析成卡片形式。

submit.png


輕應(yīng)用審核規(guī)范

服務(wù)與支持

輕應(yīng)用接入過程中遇到問題,請聯(lián)系 wangwei16@staff.weibo.com