[SNS]Mixi
http://developer.mixi.co.jp/
提供流
下面是創建一個Mixi應用程序的流程圖。[注冊]使用mixi網平臺
公司注冊認證合作伙伴,我們提供了一個應用程序使用的專用帳戶。
關于申請,我們要求您提交的登記和申請表的副本。
個人創建一個應用程序,需要注冊個人帳戶mixi網合作伙伴。
E-mail地址是必需的,如姓名,地址,注冊手機。
詳細說明請參考: 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
[登錄應用]
帳號準備完成后,登錄你要開發的應用。
詳細步驟請參考: 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
[分類發布申請]
發布做成的應用,必須創建應用程序分類
詳細步驟請參考: 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
認證請求
概述
處理流程(1)從手機向mixi服務器發送HTTP請求(2)HTTP請求從mixi服務器被發送到SAP服務器,在這種情況下,SAP服務器發送以下信息。請求是以get、post方式,用post。這時,需要向SAP服務器傳遞APPID或者客戶ID等終端信息。(3)訪問Mixi的Graph API:通過Graph API可以獲得mixi社交網數據應用在開發的應用程序中。(4)API返回的數據:將返回ATOM或JSON形式的Mixi社交數據。(5)HTML文件的返回:將顯示在用戶手機畫面上的html返回。(6)發送到您的手機
可以利用的API
通過API可以獲取mixi個人用戶信息和相關好友的信息。
mixi Graph API提供詳細的說明請參考: 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
關于OAuth Signature的驗證方法
發送Authorization頭
這份文檔的目的展示了如何修改http請求來實現向Mixi API發送認證請求的過程 所有的MixiAPI都基于HTTP協議。這意味著你編寫的任何訪問MixiAPI的軟件,都會發送一系列結構化的信息到Mixi服務器。被發送到mixi服務器的HTTP頭信息如下(通常驗證頭信息應該在一行中,但是為了易讀性進行了換行) 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"收集參數
你應該可以看到頭信息中包含6對鍵值,所有的鍵名以“oauth_”開頭。任何Mixi請求,都會收集這些組值,并且創建一個相似的頭信息,允許你為該請求指定認證信息。每一個值描述如下:
Consumer key
oauth_consumer_key 事先發行的consumer_key,標識哪一個應用程序生成請求。可以在應用程序管理界面https://sap.mixi.jp獲得這個值
Nonce
oauth_nonce參數是一個唯一的token值,應用程序應該為每一個請求生成它。會使用這個値來判斷是否一個請求被提交了多次。這個值以32字節隨機數據進行base64編碼生成,并且剔除所有非文字字符,但是任何方式生成相對隨機數的字符串都可以被接受。
Signature
oauth_signature參數包含一個值,該值以其他所有的請求參數和兩個密碼值進行簽名算法生成。
目的是Mixi可以判斷請求在傳輸中沒有被篡改,驗證應用程序發送的請求,驗證應用程序具有和用戶帳戶交互的權限。
運算oauth_signature的過程參考:http://developer.mixi.co.jp/appli/ns/mob/validate-oauth-signature/
Signature method
Mixi使用的oauth_signature_method是HMAC-SHA1。該值應該在所有的驗證過的請求中發送給Mixi API
Timestamp
oauth_timestamp參數標識請求何時被創建。這個值應該是從Unix紀元到請求被生成時點的秒數,在大多數的編程語言中都很好實現。Mixi會拒絕太久之前的請求,所以保證生成請求的計算機時鐘正確很重要。
Version
oauth_version參數應該一直是1.0。
OAuth Signature的生成方法
http://example.com/foo/?opensocial_app_id=123&opensocial_owner_id=xxxxxxxx例子如果以get請求被發送的時候,下面將解釋如何生成OAuth Signature。首先,為了生成基于字符串的署名而準備的值。1.HTTP請求方法2.請求URL。應排除查詢參數3.設置各種OAuth処理必要的參數。包含查詢參數。 例: 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 以上參數通過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這個字符串是根據HMAC-SHA1文摘生成的,根據BASE64進行編碼,生成簽名。Key是consumer_secret和空的Token Secret用&連接而成的。consumer_secret利用了application登陸時發行的東西。例如:consumer_secret是79e0a55cde43e7dc86fd1e1366d6bd6ac7771db8,那么它將在轉化成79e0a55cde43e7dc86fd1e1366d6bd6ac7771db8&。 如果這么做,簽名如下Ky/6LlDHpHX1EZMRi5mfUl9vxqY=通過由此生成的參數和Authorization頭oauth_signature值的比較,驗證是可能的。如果不匹配,請執行類似顯示錯誤畫面的處理。 關于更詳細的式樣,請參照OAuth Consumer Request 1.0 Draft 1。Post請求時的Signature生成
post請求時應非常注意,和OAuth Core 1.0里的一樣,post request的時候,請求正文也要按照OAuth的式樣定義的包含base字符串,根據歷史條件,采用不生成請求正文簽名的方法。 POST /foo/?opensocial_owner_id=xxxxxxxxxxxxx HTTP/1.0host: example.comContent-Length: 13 foo=1&bar=abc 如果上面的POST請求已提交,基本字符串如下。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 正如你可以看到,生成基本的字符串,不包括請求的主體。不過,僅是不包括請求主體。要注意賦給URL內的query parameter和GET一樣要包含base字符串。參考文獻
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的規則
URL的規范變動時,我們會通知,請注意確認。個人資料畫面URL
例如1.對于PC: http://mixi.jp/show_friend.pl?puid={user_id}2.對于移動設備: http://m.mixi.jp/show_friend.pl?puid={user_id}PC和移動設備的差別是在域名上有無 “m.”開始Mixi的移動應用程序
Mixi的移動應用程序,您可以創建一個應用程序使用的mixi網的社交圖。分享給各式各樣的朋友。應用登陸
為了操作mixi網內信息,注冊申請是必要的。首先,請在“合作伙伴儀表板”訪問應用程序創建(當然請先登錄Partner Dashboard)。如果沒有成為mixi認證的合作伙伴,不會出現該畫面。輸入Mixi應用程序的信息
登錄后,按要求填寫你的mixi應用信息,星號是必填項。頁面中,應用的對應范圍有5種,你可以創建一下5種應用程序。對應移動應用時,只有在登錄合作伙伴賬戶時才會出現,請注意,如果沒有通過合作伙伴,將不會出現。モバイル對應手機應用PC 對應PC應用スマートフォン 對應智能手機應用 1.Web版 2.android版 3.iOS版 關于各項輸入的內容,請參考以下輸入內容確認后,同意規則,登錄應用即可。
關于用戶認可
利用Graph API或UserFlow API,必須用戶認可。這里是用戶認可的介紹。用戶認可
mixi移動應用過渡到用戶認證畫面,需要使用graphapi:auth的表單標簽描述。僅支持post方法。更具體的如下html 表單action屬性描寫。 auth:graphapi 指定以下參數。 關于指定scope的值,請參考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="認可を行う" /> </form> 當用戶發出拒絕批準或授權,將遷移至應用登錄時被設定的RedirectURI。當用戶許可時,以下的值將被作為參數返回。 您可以從授權碼中獲取必要的mixi Graph API訪問令牌。關于取得的方法請參考令牌的刷新、獲取令牌http://developer.mixi.co.jp/connect/mixi_graph_api/api_auth/#toc-1發行的授權碼,有效期為3分鐘。
如果用戶沒有授權將返回以下值。
如果不需要用戶確認的范圍,如果你想下面列出的范圍,授權碼將發出用戶授權,而不顯示屏幕。
mixi_apps2
r_profile
r_profile_blood_type
r_profile_birthday
r_profile_gender
此外,像往常一樣,如果你必須指定的其他范圍,在這些范圍的同時為用戶授權屏幕將顯示。
mixi API SDK for Android
mixi官網提供了android SDK。特點
Mixi的API SDK的Android?功能如下。1.無論是個人和企業,如果你是一個注冊的合作伙伴,任何人都可以開發。2.執行的程序不要求認證/授權的OAuth 2.03.自動更新/收購的令牌4.我可以在一個統一的程序API調用5.不要輸入密碼的時候,單點登錄的用戶授權6.因為不存在需要在應用程序中嵌入的秘密,提高了安全性支持終端
Android SDK中在終端支持這項是如下。1.Android 2.1或更高版本2.可以利用的Google Play提供的API
People APIGroups APIPhoto APIRequest APICommunication Feed ※ ※對于未來將提供交流反饋下載SDK
要充分利用mixi網的Andr??oid?API SDK,請下載以下文件。 下載完成后, mixi網平臺服務條款和材料的使用準則mixi網平臺,我被視為已同意。mixiAndroidSDK-1.8.zip連接 http://developer.mixi.co.jp/appli/archive/mixiAndroidSDK-1.8.zip注冊應用程序
要使用的SDK,應用程序必須是先前注冊過合作伙伴。 首先,請在注冊頁面服務Mixi Graph API注冊您的應用程序。 請根據以下過程注冊你的項目的包署名哈希值。使用SDK開發應用程序時,必須輸入值,沒有則無法開發。 這里的值是用來驗證注冊的應用程序身份的,以確保開發的有效性。 防止懷有惡意的第三方,冒充您提供的應用程序,進行詐騙。如何獲得哈希值包簽名
1.登錄Google Play,提供需要的keystore文件2.運行JDK中的keytoolkeytool -list -v -keystore {keysore文件} -alias {作成時指定的別名}顯示結果如下;
指紋的證書: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 最后的結果是SHA1 除:以外的值的連接5057B0B9A325EEE5A254198531325263491C2580 在開發過程中,經常使用的密鑰庫文件進行調試。 在這種情況下,它也可以注冊后才能獲得的散列值的debug.keystore如下。 如果是Windows環境下,將debug.keystore文件生成在 C:\Documents and Settings\[用戶名]\.android,默認密碼為"android". keytool -list -v -keystore debug.keystore -alias androiddebugkeyURI啟動計劃
當用戶點擊列表中的應用程序和網站Mixi上的一覽,Android應用程序從Web瀏覽器啟動。 在這個時候開始的URI方案。 初始值被設置為以下值。mixiapp-<APP_ID>://run 您可以更改的此引導的的URI方案<APP_ID>的的部分。 我建議你盡可能地改變。如果你想進行更改,請從合作伙伴頁上更改應用程序設置信息。 對于實際的應用程序接收到這個開始的URI計劃,設置適當的意圖過濾器是必要的。創建項目
您需要從下載頁面下載最新的SDK,解壓縮到正確的地方。此外,在這里我們將解釋程序使用Eclipse來開發應用程序。 我們假設Eclipse插件的 Mixi的API SDK的Android?,并預先安裝。導入Mixi的API SDK的Android?
創建Android項目
按照正常程序創建Android項目創建一個項目。 目標API級別,請注意,您必須設置至少API等級8。 在情況下,它是必要的,也支持Android 2.1,請設置'7'項目最小SDK版本。注冊項目庫
注冊的項目,開發一個Mixi的API SDK的Android?庫打開項目屬性,追加[Android]-[Library]。 通過以上操作,default.properties文件被修改如下。android.library.reference.1=../jp_mixi_androidAndroidManifest.xml中
添加上網權限<uses-permission android:name="android.permission.INTERNET" />
都準備好了,現在開始開發。
初始化和授權過程
我將解釋如何使用mixi網的Android?API SDK編寫代碼來開發應用程序。Activity說明
示例代碼中的Mixi API SDK的Android?應用程序使用的主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)啟動時的處理(onCreate例如)要使用SDK,你可以調用init()方法的MixiContainer實例。 為了產生的MixiContainer實例,請使用(配置設置)MixiContainerFactory.getContainer“。 配置要設定的項目如下。 (2)結束時的處理(例如,的OnDestroy)請運行MixiContainer#close()來執行相應的結束處理。 (3)授權結果的取得(onActivityResult)在onActivityResult AuthorizeCallback的call(),以獲得授權對話框的結果。
調用身份驗證和授權對話框
要使用mixi網的應用程序的API,已執行用戶授權使用的API是必要的。 void MixiContainer#authorize(Activity activity, String[] permissions, int activityCode,CallbackListener listener)活動 指定活動的來電(如FooActivity.this)
權限 指定的范圍,我需要使用的API。 如“r_profile”,“w_photo”的范圍,請參閱每個API的文檔。
activityCode 碼值目標決策意圖
監聽 回調類調用之后的授權過程
通過調用此方法,下面的屏幕會顯示出來。
實際示例代碼是在這里
mContainer.authorize(TestActivity.this, new String[] {"r_profile","w_voice"}, AUTHORIZE_REQUEST_CODE,new CallbackListener() {@Overridepublic void onComplete(Bundle values) {// 正常時の処理}@Overridepublic void onError(ErrorInfo e) {// エラー時の処理}@Overridepublic void onCancel() {// ユーザキャンセル時の処理}@Overridepublic void onFatal(ErrorInfo e) {// 異常終了時の処理} });回調方法的結果,因為它是所謂的支持用戶的授權,請采取適當的行動。
檢索錯誤信息在授權過程中,發生認可錯誤,返回errorinfo有可能獲得更多的信息。 對于可用的方法,請參見下文。檢查授權的狀態
要檢查的狀態,當前的授權,我們使用下面的方法。
boolean MixiContainer#isAuthorized()
一般來說,僅在第一次出現授權畫面,第二個和后續的時間,它可能會跳過。
isAuthorize檢查處理方法。 返回true,如果已批準,則返回false,如果未經授權的。
解除認證
通過調用下面的方法,我們取消授權狀態。 此外,保護我們的客戶,如果你想利用mixi網的Android?API SDK,請確保實現此功能解除認證。
void MixiContainer#logout(Activity activity, int activityCode, CallbackListener listener);
如何使用API
請參考:
http://developer.mixi.co.jp/connect/mixi_graph_api/android/using-api/
總結
- 上一篇: 批处理的一些小技巧
- 下一篇: Codeforces Round #44