예제 #1
0
        public async Task <FbToken> GetApplicationToken()
        {
            if (_applicationTokenCache != null && _applicationTokenCache.Item2 > DateTime.UtcNow)
            {
                return(_applicationTokenCache.Item1);
            }

            FacebookClient client  = new FacebookClient();
            FbToken        fbToken = null;

            try
            {
                dynamic result = client.Post("oauth/access_token", new
                {
                    client_id     = AppSettings.FacebookClientId,
                    client_secret = AppSettings.FacebookClientSecret,
                    grant_type    = "client_credentials",
                });
                fbToken = new FbToken
                {
                    AccessToken = result.access_token,
                    Type        = result.token_type,
                    ExpiresIn   = result.expires_in
                };
            }
            catch (FacebookOAuthException ex)
            {
                throw SocialExceptions.FacebookOauthException(ex);
            }

            //HttpClient client = new HttpClient();
            //string url =
            //    string.Format(
            //        "https://graph.facebook.com/v2.9/oauth/access_token?client_id={0}&client_secret={1}&grant_type=client_credentials",
            //        AppSettings.FacebookClientId,
            //        AppSettings.FacebookClientSecret
            //        );

            //HttpResponseMessage response = await client.GetAsync(url);
            //response.EnsureSuccessStatusCode();
            //var jsonRes = await response.Content.ReadAsStringAsync();
            //var fbToken = JsonConvert.DeserializeObject<FbToken>(jsonRes);

            _applicationTokenCache = new Tuple <FbToken, DateTime>(fbToken, DateTime.UtcNow.AddHours(1));
            return(fbToken);
        }
예제 #2
0
        public async Task <FbUser> GetUserInfo(string fbUserId)
        {
            FbToken token = await GetApplicationToken();

            return(await GetUserInfo(token.AccessToken, fbUserId));
        }