コード例 #1
0
        protected List <FacebookPermissionRequest> CheckPermissions(
            Dictionary <string, FacebookPermissionRequest> RequiredPermissions)
        {
            var access_token = HttpContext.Items["access_token"].ToString();

            if (!string.IsNullOrEmpty(access_token))
            {
                var appsecret_proof = access_token.GenerateAppSecretProof();
                var fb = new FacebookClient(access_token);

                IEnumerable <FacebookPermissionRequest> MissingPermissions =
                    new List <FacebookPermissionRequest>();         //initialize to an empty list
                if (RequiredPermissions != null &&
                    RequiredPermissions.Count > 0)
                {
                    //create an array of Facebook Batch Parameters based on list of RequiredPermission
                    FacebookBatchParameter[] fbBatchParameters =
                        new FacebookBatchParameter[RequiredPermissions.Values.Count()];
                    int idx = 0;
                    foreach (FacebookPermissionRequest required_permssion in
                             RequiredPermissions.Values)
                    {
                        fbBatchParameters[idx] = new FacebookBatchParameter
                        {
                            HttpMethod = HttpMethod.Get,
                            Path       = string.Format("{0}{1}",
                                                       "me/permissions/",
                                                       required_permssion.permision_scope_value)
                                         .GraphAPICall(appsecret_proof)
                        };
                        required_permssion.granted = false;             //initalize all granted indicators to false for each required permission
                        idx++;
                    }
                    dynamic permission_Batchresult = fb.Batch(
                        fbBatchParameters
                        );

                    if (permission_Batchresult != null)
                    {
                        List <PermissionResults> result = JsonConvert.
                                                          DeserializeObject <List <PermissionResults> >
                                                              (permission_Batchresult.ToString());

                        foreach (FacebookPermissionModel permissionResult in
                                 result.SelectMany(x => x.data).Where(y => y.status == "granted"))
                        {
                            RequiredPermissions[permissionResult.permission].granted = true;
                        }
                        MissingPermissions = RequiredPermissions.Values.
                                             Where(p => p.granted == false);
                    }
                }
                return(MissingPermissions.ToList());
            }
            else
            {
                throw new HttpException(404, "Missing Access Token");
            }
        }
コード例 #2
0
 public JsonArray EditPost(string post_id, Dictionary <string, object> parameters)
 {
     try
     {
         FacebookBatchParameter[] batchArray = new FacebookBatchParameter[2];
         batchArray[0] = new FacebookBatchParameter(HttpMethod.Delete, post_id);
         batchArray[1] = new FacebookBatchParameter(HttpMethod.Post, post_id, parameters);
         dynamic result = fb.Batch(batchArray);
         return(result);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
コード例 #3
0
 /// <summary>
 /// Upload Multiple Video files
 /// </summary>
 /// <param name="parameters"></param>
 /// <returns></returns>
 public JsonArray UploadMultipleVideos(List <Dictionary <string, object> > parameters)
 {
     try
     {
         FacebookBatchParameter[] batchArray = new FacebookBatchParameter[parameters.Count];
         for (int i = 0; i < parameters.Count; i++)
         {
             batchArray[i] = new FacebookBatchParameter(HttpMethod.Post, base.pageID + "/videos", parameters[i]);
         }
         dynamic result = fb.Batch(batchArray);
         return(result);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
コード例 #4
0
        async public Task <JsonArray> UploadMultiplePhotosAsync(List <Dictionary <string, object> > parameters)
        {
            try
            {
                FacebookBatchParameter[] batchArray = new FacebookBatchParameter[parameters.Count];
                for (int i = 0; i < parameters.Count; i++)
                {
                    batchArray[i] = new FacebookBatchParameter(HttpMethod.Post, base.pageID + "/photos", parameters[i]);
                }

                dynamic result = await fb.BatchTaskAsync(batchArray);

                return(result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #5
0
        public object UploadFaceBookBatch(FacebookPosting input)
        {
            try
            {
                var fb = new FacebookClient(input.FacebookToken);
                fb.AppId     = input.FacebookAppId;
                fb.AppSecret = input.FacebookAppSecret;
                List <FacebookBatchParameter> fbp = new List <FacebookBatchParameter>();

                int count = 0;
                foreach (var item in input.PostingItems)
                {
                    string extension = Path.GetExtension(item.url);
                    string FileName  = Path.GetFileName(item.url);

                    if (!string.IsNullOrEmpty(extension))
                    {
                        extension = extension.Replace(".", "");
                    }

                    var param = new FacebookBatchParameter(HttpMethod.Post, "/me/photos", new Dictionary <string, object> {
                        { "message", item.Title }, { "pic" + count, new FacebookMediaObject {
                                                         ContentType = "image/" + extension, FileName = FileName
                                                     }.SetValue(File.ReadAllBytes(item.url)) }
                    });
                    fbp.Add(param);
                    count++;
                }

                return(fb.BatchTaskAsync(fbp.ToArray()).Result);
            }
            catch (FacebookOAuthException ex)
            {
                Console.WriteLine(ex.Message);
                return(ex);
            }
            catch (FacebookApiException ex)
            {
                Console.WriteLine(ex.Message);
                return(ex);
            }
        }
コード例 #6
0
 /// <summary>
 /// Makes a batch request to the Facebook server.
 /// </summary>
 /// <param name="batchParameters">List of batch parameters.</param>
 /// <param name="parameters">The parameters</param>
 /// <returns>The json result.</returns>
 public virtual object Batch(FacebookBatchParameter[] batchParameters, object parameters)
 {
     var actualParameter = PrepareBatchRequest(batchParameters, parameters);
     return Post(actualParameter);
 }
コード例 #7
0
        public virtual void GivenNullFqlInQueryThrowsArgumentNullException()
        {
            var bp = new FacebookBatchParameter();

            Assert.Throws <ArgumentNullException>(() => bp.Query((string)null));
        }
コード例 #8
0
        public virtual void GivenEmptyFqlInMultiQueryThrowsArgumentException()
        {
            var bp = new FacebookBatchParameter();

            Assert.Throws <ArgumentException>(() => bp.Query(new string[] { }));
        }