コード例 #1
0
 public User Authenticate(string facebookAccessToken)
 {
     GameNickEntities entities = new GameNickEntities();
     FacebookClient fbclient = new FacebookClient(facebookAccessToken);
     dynamic me = fbclient.Get("me");
     long myId = (long)Convert.ToUInt64(me.id.ToString());
     var exists = from users in entities.Users
                  where users.FacebookID == myId
                  select users;
     if (exists.Count() > 0)
     {
         exists.First().Name = me.name;
         exists.First().FacebookAccessToken = facebookAccessToken;
         exists.First().GameNickAccessToken = Guid.NewGuid();
         entities.SaveChanges();
         User _me = exists.First();
         _me.Status.Load();
         _me.GameNicks.Load();
         return _me;
     }
     // ReSharper disable RedundantIfElseBlock
     else
     // ReSharper restore RedundantIfElseBlock
     {
         User user = User.CreateUser(myId, 0);
         user.Name = me.name;
         // check that the ID is updated to a new unique value when it's added
         entities.AddToUsers(user);
         entities.SaveChanges();
         // todo: update the userID before returing it
         return entities.Users.First(u => u.FacebookID == myId);//user;
     }
 }