[SNS]Mixi
http://developer.mixi.co.jp/
提供流
下面是創(chuàng)建一個(gè)Mixi應(yīng)用程序的流程圖。[注冊(cè)]使用mixi網(wǎng)平臺(tái)
公司注冊(cè)認(rèn)證合作伙伴,我們提供了一個(gè)應(yīng)用程序使用的專用帳戶。
關(guān)于申請(qǐng),我們要求您提交的登記和申請(qǐng)表的副本。
個(gè)人創(chuàng)建一個(gè)應(yīng)用程序,需要注冊(cè)個(gè)人帳戶mixi網(wǎng)合作伙伴。
E-mail地址是必需的,如姓名,地址,注冊(cè)手機(jī)。
詳細(xì)說明請(qǐng)參考: http://translate.googleusercontent.com/translate_c?depth=1&hl=zh-CN&rurl=translate.google.com.hk&sl=ja&tl=zh-CN&twu=1&u=http://developer.mixi.co.jp/about-platform/overview/&usg=ALkJrhgiE_rnRJkxPgkA0EJzRUzMVg46xg
[登錄應(yīng)用]
帳號(hào)準(zhǔn)備完成后,登錄你要開發(fā)的應(yīng)用。
詳細(xì)步驟請(qǐng)參考: http://translate.googleusercontent.com/translate_c?depth=1&hl=zh-CN&rurl=translate.google.com.hk&sl=ja&tl=zh-CN&twu=1&u=http://developer.mixi.co.jp/appli/com/lauch/register/&usg=ALkJrhhftLqsX4QBA7TDnYGolz3ldhUTKA
[分類發(fā)布申請(qǐng)]
發(fā)布做成的應(yīng)用,必須創(chuàng)建應(yīng)用程序分類
詳細(xì)步驟請(qǐng)參考: http://translate.googleusercontent.com/translate_c?depth=1&hl=zh-CN&rurl=translate.google.com.hk&sl=ja&tl=zh-CN&twu=1&u=http://developer.mixi.co.jp/appli/com/lauch/category_listing&usg=ALkJrhgpt5kD2aphNMUxfuvnRwpekMLZ3A
認(rèn)證請(qǐng)求
概述
處理流程(1)從手機(jī)向mixi服務(wù)器發(fā)送HTTP請(qǐng)求(2)HTTP請(qǐng)求從mixi服務(wù)器被發(fā)送到SAP服務(wù)器,在這種情況下,SAP服務(wù)器發(fā)送以下信息。請(qǐng)求是以get、post方式,用post。這時(shí),需要向SAP服務(wù)器傳遞APPID或者客戶ID等終端信息。(3)訪問Mixi的Graph API:通過Graph API可以獲得mixi社交網(wǎng)數(shù)據(jù)應(yīng)用在開發(fā)的應(yīng)用程序中。(4)API返回的數(shù)據(jù):將返回ATOM或JSON形式的Mixi社交數(shù)據(jù)。(5)HTML文件的返回:將顯示在用戶手機(jī)畫面上的html返回。(6)發(fā)送到您的手機(jī)
可以利用的API
通過API可以獲取mixi個(gè)人用戶信息和相關(guān)好友的信息。
mixi Graph API提供詳細(xì)的說明請(qǐng)參考: http://developer.mixi.co.jp/connect/mixi_graph_api/
People API
Groups API
People lookup API
Updates API
Voice API
Check API
Photo API
Message API
Diary API
Check-in API
Profile Image API
Persistence API
Calendar API
Page API
關(guān)于OAuth Signature的驗(yàn)證方法
發(fā)送Authorization頭
這份文檔的目的展示了如何修改http請(qǐng)求來實(shí)現(xiàn)向Mixi API發(fā)送認(rèn)證請(qǐng)求的過程 所有的MixiAPI都基于HTTP協(xié)議。這意味著你編寫的任何訪問MixiAPI的軟件,都會(huì)發(fā)送一系列結(jié)構(gòu)化的信息到Mixi服務(wù)器。被發(fā)送到mixi服務(wù)器的HTTP頭信息如下(通常驗(yàn)證頭信息應(yīng)該在一行中,但是為了易讀性進(jìn)行了換行) Authorization = OAuth realm="",oauth_consumer_key="mixiapp-web_xxxxx",oauth_nonce="9dc8fbca0e51842e7449",oauth_signature="Ky%2F6LlDHpHX1EZMRi5mfUl9vxqY%3D",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1254282755",oauth_version="1.0"收集參數(shù)
你應(yīng)該可以看到頭信息中包含6對(duì)鍵值,所有的鍵名以“oauth_”開頭。任何Mixi請(qǐng)求,都會(huì)收集這些組值,并且創(chuàng)建一個(gè)相似的頭信息,允許你為該請(qǐng)求指定認(rèn)證信息。每一個(gè)值描述如下:
Consumer key
oauth_consumer_key 事先發(fā)行的consumer_key,標(biāo)識(shí)哪一個(gè)應(yīng)用程序生成請(qǐng)求。可以在應(yīng)用程序管理界面https://sap.mixi.jp獲得這個(gè)值
Nonce
oauth_nonce參數(shù)是一個(gè)唯一的token值,應(yīng)用程序應(yīng)該為每一個(gè)請(qǐng)求生成它。會(huì)使用這個(gè)値來判斷是否一個(gè)請(qǐng)求被提交了多次。這個(gè)值以32字節(jié)隨機(jī)數(shù)據(jù)進(jìn)行base64編碼生成,并且剔除所有非文字字符,但是任何方式生成相對(duì)隨機(jī)數(shù)的字符串都可以被接受。
Signature
oauth_signature參數(shù)包含一個(gè)值,該值以其他所有的請(qǐng)求參數(shù)和兩個(gè)密碼值進(jìn)行簽名算法生成。
目的是Mixi可以判斷請(qǐng)求在傳輸中沒有被篡改,驗(yàn)證應(yīng)用程序發(fā)送的請(qǐng)求,驗(yàn)證應(yīng)用程序具有和用戶帳戶交互的權(quán)限。
運(yùn)算oauth_signature的過程參考:http://developer.mixi.co.jp/appli/ns/mob/validate-oauth-signature/
Signature method
Mixi使用的oauth_signature_method是HMAC-SHA1。該值應(yīng)該在所有的驗(yàn)證過的請(qǐng)求中發(fā)送給Mixi API
Timestamp
oauth_timestamp參數(shù)標(biāo)識(shí)請(qǐng)求何時(shí)被創(chuàng)建。這個(gè)值應(yīng)該是從Unix紀(jì)元到請(qǐng)求被生成時(shí)點(diǎn)的秒數(shù),在大多數(shù)的編程語言中都很好實(shí)現(xiàn)。Mixi會(huì)拒絕太久之前的請(qǐng)求,所以保證生成請(qǐng)求的計(jì)算機(jī)時(shí)鐘正確很重要。
Version
oauth_version參數(shù)應(yīng)該一直是1.0。
OAuth Signature的生成方法
http://example.com/foo/?opensocial_app_id=123&opensocial_owner_id=xxxxxxxx例子如果以get請(qǐng)求被發(fā)送的時(shí)候,下面將解釋如何生成OAuth Signature。首先,為了生成基于字符串的署名而準(zhǔn)備的值。1.HTTP請(qǐng)求方法2.請(qǐng)求URL。應(yīng)排除查詢參數(shù)3.設(shè)置各種OAuth処理必要的參數(shù)。包含查詢參數(shù)。 例: 1.GET2.http://example.com/foo/3.oauth_consumer_key=mixiapp-web_xxxxx&oauth_nonce=9dc8fbca0e51842e7449&oauth_signature_method=HMAC SHA1&oauth_timestamp=1254282755&oauth_version=1.0&opensocial_app_id=123&opensocial_owner_id=xxxxxxxx 以上參數(shù)通過URI escape生成以下通過&連接的字符串 GET&http%3A%2F%2Fexample.com%2Ffoo%2F&oauth_consumer_key%3Dmixiapp-web_xxxxx %26oauth_nonce%3D9dc8fbca0e51842e7449%26oauth_signature_method%3DHMAC-SHA1%26 oauth_timestamp%3D1254282755%26oauth_version%3D1.0%26opensocial_app_id%3D123%26 opensocial_owner_id%3Dxxxxxxxx這個(gè)字符串是根據(jù)HMAC-SHA1文摘生成的,根據(jù)BASE64進(jìn)行編碼,生成簽名。Key是consumer_secret和空的Token Secret用&連接而成的。consumer_secret利用了application登陸時(shí)發(fā)行的東西。例如:consumer_secret是79e0a55cde43e7dc86fd1e1366d6bd6ac7771db8,那么它將在轉(zhuǎn)化成79e0a55cde43e7dc86fd1e1366d6bd6ac7771db8&。 如果這么做,簽名如下Ky/6LlDHpHX1EZMRi5mfUl9vxqY=通過由此生成的參數(shù)和Authorization頭oauth_signature值的比較,驗(yàn)證是可能的。如果不匹配,請(qǐng)執(zhí)行類似顯示錯(cuò)誤畫面的處理。 關(guān)于更詳細(xì)的式樣,請(qǐng)參照OAuth Consumer Request 1.0 Draft 1。Post請(qǐng)求時(shí)的Signature生成
post請(qǐng)求時(shí)應(yīng)非常注意,和OAuth Core 1.0里的一樣,post request的時(shí)候,請(qǐng)求正文也要按照OAuth的式樣定義的包含base字符串,根據(jù)歷史條件,采用不生成請(qǐng)求正文簽名的方法。 POST /foo/?opensocial_owner_id=xxxxxxxxxxxxx HTTP/1.0host: example.comContent-Length: 13 foo=1&bar=abc 如果上面的POST請(qǐng)求已提交,基本字符串如下。POST&http%3A%2F%2Fexample.com%2Ffoo%2F&oauth_consumer_key%3Dbc906fac81f581c3c96a %26oauth_nonce%3D9dc8fbca0e51842e7449%26oauth_signature_method%3DHMAC-SHA1%26 oauth_timestamp%3D1254282755%26oauth_version%3D1.0%26opensocial_owner_id%3Dxxxxxxxx 正如你可以看到,生成基本的字符串,不包括請(qǐng)求的主體。不過,僅是不包括請(qǐng)求主體。要注意賦給URL內(nèi)的query parameter和GET一樣要包含base字符串。參考文獻(xiàn)
OAuth Consumer Request 1.0 Draft 1
http://oauth.googlecode.com/svn/spec/ext/consumer_request/1.0/drafts/1/spec.html
December 2007.
URL的規(guī)則
URL的規(guī)范變動(dòng)時(shí),我們會(huì)通知,請(qǐng)注意確認(rèn)。個(gè)人資料畫面URL
例如1.對(duì)于PC: http://mixi.jp/show_friend.pl?puid={user_id}2.對(duì)于移動(dòng)設(shè)備: http://m.mixi.jp/show_friend.pl?puid={user_id}PC和移動(dòng)設(shè)備的差別是在域名上有無 “m.”開始Mixi的移動(dòng)應(yīng)用程序
Mixi的移動(dòng)應(yīng)用程序,您可以創(chuàng)建一個(gè)應(yīng)用程序使用的mixi網(wǎng)的社交圖。分享給各式各樣的朋友。應(yīng)用登陸
為了操作mixi網(wǎng)內(nèi)信息,注冊(cè)申請(qǐng)是必要的。首先,請(qǐng)?jiān)凇昂献骰锇閮x表板”訪問應(yīng)用程序創(chuàng)建(當(dāng)然請(qǐng)先登錄Partner Dashboard)。如果沒有成為mixi認(rèn)證的合作伙伴,不會(huì)出現(xiàn)該畫面。輸入Mixi應(yīng)用程序的信息
登錄后,按要求填寫你的mixi應(yīng)用信息,星號(hào)是必填項(xiàng)。頁面中,應(yīng)用的對(duì)應(yīng)范圍有5種,你可以創(chuàng)建一下5種應(yīng)用程序。對(duì)應(yīng)移動(dòng)應(yīng)用時(shí),只有在登錄合作伙伴賬戶時(shí)才會(huì)出現(xiàn),請(qǐng)注意,如果沒有通過合作伙伴,將不會(huì)出現(xiàn)。モバイル對(duì)應(yīng)手機(jī)應(yīng)用PC 對(duì)應(yīng)PC應(yīng)用スマートフォン 對(duì)應(yīng)智能手機(jī)應(yīng)用 1.Web版 2.android版 3.iOS版 關(guān)于各項(xiàng)輸入的內(nèi)容,請(qǐng)參考以下輸入內(nèi)容確認(rèn)后,同意規(guī)則,登錄應(yīng)用即可。
關(guān)于用戶認(rèn)可
利用Graph API或UserFlow API,必須用戶認(rèn)可。這里是用戶認(rèn)可的介紹。用戶認(rèn)可
mixi移動(dòng)應(yīng)用過渡到用戶認(rèn)證畫面,需要使用graphapi:auth的表單標(biāo)簽描述。僅支持post方法。更具體的如下html 表單action屬性描寫。 auth:graphapi 指定以下參數(shù)。 關(guān)于指定scope的值,請(qǐng)參考mixi Graph API的各種文檔。示例: <form action="auth:graphapi" method="POST"> <input type="hidden" name="response_type" value="code" /> <input type="hidden" name="scope" value="mixi_apps2 r_profile r_voice w_voice" /> <input type="hidden" name="state" value="1234567890" /> <input type="submit" value="認(rèn)可を行う" /> </form> 當(dāng)用戶發(fā)出拒絕批準(zhǔn)或授權(quán),將遷移至應(yīng)用登錄時(shí)被設(shè)定的RedirectURI。當(dāng)用戶許可時(shí),以下的值將被作為參數(shù)返回。 您可以從授權(quán)碼中獲取必要的mixi Graph API訪問令牌。關(guān)于取得的方法請(qǐng)參考令牌的刷新、獲取令牌http://developer.mixi.co.jp/connect/mixi_graph_api/api_auth/#toc-1發(fā)行的授權(quán)碼,有效期為3分鐘。
如果用戶沒有授權(quán)將返回以下值。
如果不需要用戶確認(rèn)的范圍,如果你想下面列出的范圍,授權(quán)碼將發(fā)出用戶授權(quán),而不顯示屏幕。
mixi_apps2
r_profile
r_profile_blood_type
r_profile_birthday
r_profile_gender
此外,像往常一樣,如果你必須指定的其他范圍,在這些范圍的同時(shí)為用戶授權(quán)屏幕將顯示。
mixi API SDK for Android
mixi官網(wǎng)提供了android SDK。特點(diǎn)
Mixi的API SDK的Android?功能如下。1.無論是個(gè)人和企業(yè),如果你是一個(gè)注冊(cè)的合作伙伴,任何人都可以開發(fā)。2.執(zhí)行的程序不要求認(rèn)證/授權(quán)的OAuth 2.03.自動(dòng)更新/收購的令牌4.我可以在一個(gè)統(tǒng)一的程序API調(diào)用5.不要輸入密碼的時(shí)候,單點(diǎn)登錄的用戶授權(quán)6.因?yàn)椴淮嬖谛枰趹?yīng)用程序中嵌入的秘密,提高了安全性支持終端
Android SDK中在終端支持這項(xiàng)是如下。1.Android 2.1或更高版本2.可以利用的Google Play提供的API
People APIGroups APIPhoto APIRequest APICommunication Feed ※ ※對(duì)于未來將提供交流反饋下載SDK
要充分利用mixi網(wǎng)的Andr??oid?API SDK,請(qǐng)下載以下文件。 下載完成后, mixi網(wǎng)平臺(tái)服務(wù)條款和材料的使用準(zhǔn)則mixi網(wǎng)平臺(tái),我被視為已同意。mixiAndroidSDK-1.8.zip連接 http://developer.mixi.co.jp/appli/archive/mixiAndroidSDK-1.8.zip注冊(cè)應(yīng)用程序
要使用的SDK,應(yīng)用程序必須是先前注冊(cè)過合作伙伴。 首先,請(qǐng)?jiān)谧?cè)頁面服務(wù)Mixi Graph API注冊(cè)您的應(yīng)用程序。 請(qǐng)根據(jù)以下過程注冊(cè)你的項(xiàng)目的包署名哈希值。使用SDK開發(fā)應(yīng)用程序時(shí),必須輸入值,沒有則無法開發(fā)。 這里的值是用來驗(yàn)證注冊(cè)的應(yīng)用程序身份的,以確保開發(fā)的有效性。 防止懷有惡意的第三方,冒充您提供的應(yīng)用程序,進(jìn)行詐騙。如何獲得哈希值包簽名
1.登錄Google Play,提供需要的keystore文件2.運(yùn)行JDK中的keytoolkeytool -list -v -keystore {keysore文件} -alias {作成時(shí)指定的別名}顯示結(jié)果如下;
指紋的證書:MD5:2C:D8:DD:C5:D4:FE:9D:55:89:57:E6:7A:BB:12:3 F:55SHA1:50:57:B0:B9:A3:25:EE:E5:A2:54:19:85:31:32:52:63:49:1?:25:80簽名算法的名稱:SHA1withRSA版本:3 最后的結(jié)果是SHA1 除:以外的值的連接5057B0B9A325EEE5A254198531325263491C2580 在開發(fā)過程中,經(jīng)常使用的密鑰庫文件進(jìn)行調(diào)試。 在這種情況下,它也可以注冊(cè)后才能獲得的散列值的debug.keystore如下。 如果是Windows環(huán)境下,將debug.keystore文件生成在 C:\Documents and Settings\[用戶名]\.android,默認(rèn)密碼為"android". keytool -list -v -keystore debug.keystore -alias androiddebugkeyURI啟動(dòng)計(jì)劃
當(dāng)用戶點(diǎn)擊列表中的應(yīng)用程序和網(wǎng)站Mixi上的一覽,Android應(yīng)用程序從Web瀏覽器啟動(dòng)。 在這個(gè)時(shí)候開始的URI方案。 初始值被設(shè)置為以下值。mixiapp-<APP_ID>://run 您可以更改的此引導(dǎo)的的URI方案<APP_ID>的的部分。 我建議你盡可能地改變。如果你想進(jìn)行更改,請(qǐng)從合作伙伴頁上更改應(yīng)用程序設(shè)置信息。 對(duì)于實(shí)際的應(yīng)用程序接收到這個(gè)開始的URI計(jì)劃,設(shè)置適當(dāng)?shù)囊鈭D過濾器是必要的。創(chuàng)建項(xiàng)目
您需要從下載頁面下載最新的SDK,解壓縮到正確的地方。此外,在這里我們將解釋程序使用Eclipse來開發(fā)應(yīng)用程序。 我們假設(shè)Eclipse插件的 Mixi的API SDK的Android?,并預(yù)先安裝。導(dǎo)入Mixi的API SDK的Android?
創(chuàng)建Android項(xiàng)目
按照正常程序創(chuàng)建Android項(xiàng)目創(chuàng)建一個(gè)項(xiàng)目。 目標(biāo)API級(jí)別,請(qǐng)注意,您必須設(shè)置至少API等級(jí)8。 在情況下,它是必要的,也支持Android 2.1,請(qǐng)?jiān)O(shè)置'7'項(xiàng)目最小SDK版本。注冊(cè)項(xiàng)目庫
注冊(cè)的項(xiàng)目,開發(fā)一個(gè)Mixi的API SDK的Android?庫打開項(xiàng)目屬性,追加[Android]-[Library]。 通過以上操作,default.properties文件被修改如下。android.library.reference.1=../jp_mixi_androidAndroidManifest.xml中
添加上網(wǎng)權(quán)限<uses-permission android:name="android.permission.INTERNET" />
都準(zhǔn)備好了,現(xiàn)在開始開發(fā)。
初始化和授權(quán)過程
我將解釋如何使用mixi網(wǎng)的Android?API SDK編寫代碼來開發(fā)應(yīng)用程序。Activity說明
示例代碼中的Mixi API SDK的Android?應(yīng)用程序使用的主Activity。 你可以這樣寫只有很少的代碼,即可使用SDK功能。 package com.example.foo;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import jp.mixi.android.sdk.*;public class TestActivity extends Activity {MixiContainer mContainer;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Config config = new Config();config.clientId = "YOUR_CONSUMER_KEY";config.selector = Config.GRAPH_API;mContainer = MixiContainerFactory.getContainer(config);mContainer.init(this);}@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);mContainer.authorizeCallback(requestCode, resultCode, data);}@Overridepublic void onDestroy() {mContainer.close(this);super.onDestroy();} } (1)啟動(dòng)時(shí)的處理(onCreate例如)要使用SDK,你可以調(diào)用init()方法的MixiContainer實(shí)例。 為了產(chǎn)生的MixiContainer實(shí)例,請(qǐng)使用(配置設(shè)置)MixiContainerFactory.getContainer“。 配置要設(shè)定的項(xiàng)目如下。 (2)結(jié)束時(shí)的處理(例如,的OnDestroy)請(qǐng)運(yùn)行MixiContainer#close()來執(zhí)行相應(yīng)的結(jié)束處理。 (3)授權(quán)結(jié)果的取得(onActivityResult)在onActivityResult AuthorizeCallback的call(),以獲得授權(quán)對(duì)話框的結(jié)果。
調(diào)用身份驗(yàn)證和授權(quán)對(duì)話框
要使用mixi網(wǎng)的應(yīng)用程序的API,已執(zhí)行用戶授權(quán)使用的API是必要的。 void MixiContainer#authorize(Activity activity, String[] permissions, int activityCode,CallbackListener listener)活動(dòng) 指定活動(dòng)的來電(如FooActivity.this)
權(quán)限 指定的范圍,我需要使用的API。 如“r_profile”,“w_photo”的范圍,請(qǐng)參閱每個(gè)API的文檔。
activityCode 碼值目標(biāo)決策意圖
監(jiān)聽 回調(diào)類調(diào)用之后的授權(quán)過程
通過調(diào)用此方法,下面的屏幕會(huì)顯示出來。
實(shí)際示例代碼是在這里
mContainer.authorize(TestActivity.this, new String[] {"r_profile","w_voice"}, AUTHORIZE_REQUEST_CODE,new CallbackListener() {@Overridepublic void onComplete(Bundle values) {// 正常時(shí)の処理}@Overridepublic void onError(ErrorInfo e) {// エラー時(shí)の処理}@Overridepublic void onCancel() {// ユーザキャンセル時(shí)の処理}@Overridepublic void onFatal(ErrorInfo e) {// 異常終了時(shí)の処理} });回調(diào)方法的結(jié)果,因?yàn)樗撬^的支持用戶的授權(quán),請(qǐng)采取適當(dāng)?shù)男袆?dòng)。
檢索錯(cuò)誤信息在授權(quán)過程中,發(fā)生認(rèn)可錯(cuò)誤,返回errorinfo有可能獲得更多的信息。 對(duì)于可用的方法,請(qǐng)參見下文。檢查授權(quán)的狀態(tài)
要檢查的狀態(tài),當(dāng)前的授權(quán),我們使用下面的方法。
boolean MixiContainer#isAuthorized()
一般來說,僅在第一次出現(xiàn)授權(quán)畫面,第二個(gè)和后續(xù)的時(shí)間,它可能會(huì)跳過。
isAuthorize檢查處理方法。 返回true,如果已批準(zhǔn),則返回false,如果未經(jīng)授權(quán)的。
解除認(rèn)證
通過調(diào)用下面的方法,我們?nèi)∠跈?quán)狀態(tài)。 此外,保護(hù)我們的客戶,如果你想利用mixi網(wǎng)的Android?API SDK,請(qǐng)確保實(shí)現(xiàn)此功能解除認(rèn)證。
void MixiContainer#logout(Activity activity, int activityCode, CallbackListener listener);
如何使用API
請(qǐng)參考:
http://developer.mixi.co.jp/connect/mixi_graph_api/android/using-api/
總結(jié)
- 上一篇: 批处理的一些小技巧
- 下一篇: Codeforces Round #44