public Task <FacebookUserInfo> GetUserInfo()
        {
            var keys   = new object [] { "fields" };
            var values = new object [] { "id,first_name,last_name,email" };

            string version    = new GraphRequest("/me", null).Version;
            string httpMethod = new GraphRequest("/me", null).HTTPMethod;

            GraphRequest graphRequest = new GraphRequest("/me", NSDictionary.FromObjectsAndKeys(values, keys), AccessToken.CurrentAccessToken.TokenString, version, httpMethod);

            var tcs = new TaskCompletionSource <FacebookUserInfo>();

            graphRequest.Start((GraphRequestConnection connection, NSObject result, NSError error) =>
            {
                if (error == null)
                {
                    tcs.TrySetResult(FacebookUserInfo.CreateFrom(((NSDictionary)result).Select(v => new KeyValuePair <string, string>(v.Key.ToString(), v.Value.ToString())).ToDictionary(v => v.Key, v => v.Value)));
                }
                else
                {
                    tcs.SetException(new NSErrorException(error));
                }
            });

            return(tcs.Task);
        }
示例#2
0
            public void OnCompleted(GraphResponse response)
            {
                if (response.Error == null)
                {
                    Org.Json.JSONArray userInfoKeys = response.JSONObject.Names();

                    Dictionary <string, string> userInfo = new Dictionary <string, string>();

                    for (int i = 0; i < userInfoKeys.Length(); i++)
                    {
                        userInfo.Add(userInfoKeys.Get(i).ToString(), response.JSONObject.GetString(userInfoKeys.Get(i).ToString()));
                    }

                    _taskCompletionSource.TrySetResult(FacebookUserInfo.CreateFrom(userInfo));
                }
                else
                {
                    _taskCompletionSource.TrySetException(response.Error.Exception);
                }
            }