コード例 #1
0
        /// <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);
        }
コード例 #2
0
		/// <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);
		}
コード例 #3
0
        /// <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);
        }