private string parseFacebookUserIdFromSettings(ACAccount account)
        {
            SLRequest sl = SLRequest.Create(SLServiceKind.Facebook, SLRequestMethod.Get, new NSUrl("https://graph.facebook.com/me"), null);

            sl.Account = account;

            AutoResetEvent completedEvent = new AutoResetEvent(false);
            var            id             = string.Empty;

            sl.PerformRequest((data, response, error) =>
            {
                if (error == null)
                {
                    NSError parseError;
                    NSDictionary jsonDict = (NSDictionary)NSJsonSerialization.Deserialize(data, 0, out parseError);
                    if (jsonDict != null)
                    {
                        NSObject obj = jsonDict.ValueForKey(new NSString("id"));
                        id           = obj?.ToString();
                    }
                }

                completedEvent.Set();
            });

            completedEvent.WaitOne();
            return(id);
        }
            public override Task <Response> GetResponseAsync(CancellationToken cancellationToken)
            {
                var tcs = new TaskCompletionSource <Response> ();

                cancellationToken.Register(() => tcs.TrySetCanceled());

                UpdateParameters(request);

                request.PerformRequest((resposeData, urlResponse, err) => {
                    Response result = null;
                    try {
                        if (err != null)
                        {
                            throw new SocialException(err.LocalizedDescription);
                        }

                        result = new FoundationResponse(resposeData, urlResponse);
                    } catch (Exception ex) {
                        tcs.TrySetException(ex);
                        return;
                    }

                    tcs.TrySetResult(result);
                });

                return(tcs.Task);
            }