0

我试图返回一个对象的值,但它返回 null,但它在请求中返回一个值。

using System;
using Xamarin.Auth;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using System.Linq;
using Xamarin.Forms;

namespace RegistroAgil_Couchbase.Droid
{
    public class UserInfoRepository
    {
        public OAuthUserInfo Get()
        {
            var mainActivity = Forms.Context as MainActivity;
            var accounts = AccountStore.Create(mainActivity).FindAccountsForService("Facebook");
            var enumerable = accounts as IList<Account> ?? accounts.ToList();
            var account = enumerable.FirstOrDefault () == null ? null : enumerable.First ();

            if (account == null) {
                return null;
            } else {
                var request = new OAuth2Request ("GET", new Uri ("https://graph.facebook.com/me"), null, account);

                JObject obj = new JObject ();

                request.GetResponseAsync ().ContinueWith (t => {
                    if (t.IsFaulted)
                        Console.WriteLine ("Error: " + t.Exception.InnerException.Message);
                    else {
                        obj = JObject.Parse (t.Result.GetResponseText ());

                        Console.WriteLine(obj["name"]); // <-- Here returns a value.
                    }
                });

                return new OAuthUserInfo {
                    AuthName = (string)obj ["name"] // <-- Returns null.
                };
            }
        }
    }
}

我非常感谢任何人可以提供的任何帮助。提前致谢!

4

1 回答 1

0

1.

var waitEvent = new AutoResetEvent(false);

行前

request.GetResponseAsync ().ContinueWith (t => {

2.

waitEvent.Set();

obj = JObject.Parse (t.Result.GetResponseText ());

3.

waitEvent.WaitOne();

return new OAuthUserInfo {

或者

方法应该是

public async Task<OAuthUserInfo> Get()

并致电索取

var object = await request.GetResponseAsync ();
于 2015-05-22T00:09:53.120 回答