/// <summary> /// 指定されたSNSのauthDataを取得します。 /// </summary> /// <param name="provider">SNS名</param> /// <returns>指定されたSNSのauthData</returns> public Dictionary <string, object> GetAuthDataForProvider(string provider) { List <string> providerList = new List <string> () { "facebook", "twitter", "apple", "anonymous" }; if (string.IsNullOrEmpty(provider) || !providerList.Contains(provider)) { throw new NCMBException(new ArgumentException("Provider must be facebook or twitter or apple or anonymous")); } Dictionary <string, object> authData = new Dictionary <string, object> (); switch (provider) { case "facebook": var facebookAuthData = (Dictionary <string, object>) this ["authData"]; var facebookParam = (Dictionary <string, object>)facebookAuthData ["facebook"]; authData.Add("id", facebookParam ["id"]); authData.Add("access_token", facebookParam ["access_token"]); authData.Add("expiration_date", NCMBUtility.encodeDate((DateTime)facebookParam ["expiration_date"])); break; case "twitter": var twitterAuthData = (Dictionary <string, object>) this ["authData"]; var twitterParam = (Dictionary <string, object>)twitterAuthData ["twitter"]; authData.Add("id", twitterParam ["id"]); authData.Add("screen_name", twitterParam ["screen_name"]); authData.Add("oauth_consumer_key", twitterParam ["oauth_consumer_key"]); authData.Add("consumer_secret", twitterParam ["consumer_secret"]); authData.Add("oauth_token", twitterParam ["oauth_token"]); authData.Add("oauth_token_secret", twitterParam ["oauth_token_secret"]); break; case "apple": var appleAuthData = (Dictionary <string, object>) this["authData"]; var appleParam = (Dictionary <string, object>)appleAuthData["apple"]; authData.Add("id", appleParam["id"]); authData.Add("access_token", appleParam["access_token"]); authData.Add("client_id", appleParam["client_id"]); break; case "anonymous": var anonymousAuthData = (Dictionary <string, object>) this ["authData"]; var anonymousParam = (Dictionary <string, object>)anonymousAuthData ["anonymous"]; authData.Add("id", anonymousParam ["id"]); break; } return(authData); }
/// <summary> /// コンストラクター。 /// </summary> public NCMBFacebookParameters(string userId, string accessToken, DateTime expirationDate) { if (string.IsNullOrEmpty (userId) || string.IsNullOrEmpty (accessToken) || string.IsNullOrEmpty (NCMBUtility.encodeDate (expirationDate)) ) { throw new NCMBException (new ArgumentException ("userId or accessToken or expirationDate must not be null.")); } Dictionary<string, object> objDate = new Dictionary<string, object> () { {"__type", "Date"}, {"iso", NCMBUtility.encodeDate (expirationDate)} }; Dictionary<string, object> facebookParam = new Dictionary<string, object> () { {"id", userId}, {"access_token", accessToken}, {"expiration_date", objDate} }; param.Add ("facebook", facebookParam); }
/// <summary> /// 非同期処理でスクリプトの実行を行います。 /// </summary> /// <param name="header">リクエストヘッダー.</param> /// <param name="body">リクエストボディ</param> /// <param name="query">クエリパラメーター</param> /// <param name="callback">コールバック</param> public void ExecuteAsync(IDictionary <string, object> header, IDictionary <string, object> body, IDictionary <string, object> query, NCMBExecuteScriptCallback callback) { //URL作成 String endpoint = DEFAULT_SCRIPT_ENDPOINT; String scriptUrl = DEFAULT_SCRIPT_ENDPOINT + "/" + DEFAULT_SCRIPT_API_VERSION + "/" + SERVICE_PATH + "/" + this._scriptName; if (this._baseUrl == null || this._baseUrl.Length == 0) { throw new ArgumentException("Invalid baseUrl."); } else if (!this._baseUrl.Equals(DEFAULT_SCRIPT_ENDPOINT)) { //ユーザー設定時 endpoint = _baseUrl; scriptUrl = this._baseUrl + "/" + this._scriptName; } //メソッド作成 ConnectType type; switch (_method) { case MethodType.POST: type = ConnectType.POST; break; case MethodType.PUT: type = ConnectType.PUT; break; case MethodType.GET: type = ConnectType.GET; break; case MethodType.DELETE: type = ConnectType.DELETE; break; default: throw new ArgumentException("Invalid methodType."); } //コンテント作成 String content = null; if (body != null) { content = Json.Serialize(body); } //クエリ文字列作成 String queryVal = ""; String queryString = "?"; if (query != null && query.Count > 0) { int count = query.Count; foreach (KeyValuePair <string, object> pair in query) { if (pair.Value is IList || pair.Value is IDictionary) { //value形式:array,ILis,IDictionaryの場合 queryVal = SimpleJSON.Json.Serialize(pair.Value); } else if (pair.Value is DateTime) { //value形式:DateTimeの場合 queryVal = NCMBUtility.encodeDate((DateTime)pair.Value); } else { //value形式:上の以外場合 queryVal = pair.Value.ToString(); } queryString += pair.Key + "=" + Uri.EscapeDataString(queryVal); if (count > 1) { queryString += "&"; --count; } } scriptUrl += queryString; } ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; //コネクション作成 NCMBConnection connection = new NCMBConnection(scriptUrl, type, content, NCMBUser._getCurrentSessionToken(), null, endpoint); //オリジナルヘッダー設定 if (header != null && header.Count > 0) { foreach (KeyValuePair <string, object> pair in header) { connection._request.SetRequestHeader(pair.Key, pair.Value.ToString()); } } //通信 Connect(connection, callback); }