· 6 years ago · Jun 07, 2019, 03:44 AM
1 [HttpGet]
2 public IHttpActionResult TwitterAuth(/*ProfileGuideVM _data*/string role_name)
3 {
4 string Key = ConfigurationManager.AppSettings["consumerKey"];
5 string Secret = ConfigurationManager.AppSettings["consumerSecret"];
6 string oauth_consumer_key = ConfigurationManager.AppSettings["AccessToken"];
7 string oauth_consumer_secret = ConfigurationManager.AppSettings["AccessTokenSecret"];
8
9 TwitterService service = new TwitterService(Key, Secret);
10 OAuthRequestToken requestToken = service.GetRequestToken("http://localhost:55402/api/service/TwitterCallback?" + "role_name=" + role_name);
11 //OAuthRequestToken requestToken = service.GetRequestToken("http://localhost:55402/api/service/twittercallback?" + "role_name=" + role_name);
12
13 Uri uri = service.GetAuthenticationUrl(requestToken);
14
15 return Redirect(uri.ToString());
16 }
17
18 [HttpGet]
19 public async Task<IHttpActionResult> TwitterCallback(string role_name, string oauth_token, string oauth_verifier)
20 {
21 var requestToken = new OAuthRequestToken { Token = oauth_token };
22
23 string Key = ConfigurationManager.AppSettings["consumerKey"];
24 string Secret = ConfigurationManager.AppSettings["consumerSecret"];
25
26 try
27 {
28 TwitterService service = new TwitterService(Key, Secret);
29 //var twitterStatus = service.SendTweetWithMedia(new SendTweetWithMediaOptions() { Status = "Hello World" ,Images= });
30 OAuthAccessToken accessToken = service.GetAccessToken(requestToken, oauth_verifier);
31 service.AuthenticateWith(accessToken.Token, accessToken.TokenSecret);
32 VerifyCredentialsOptions option = new VerifyCredentialsOptions();
33
34 TwitterUser user = service.VerifyCredentials(option);
35
36 var authTwitter = new SingleUserAuthorizer
37 {
38 CredentialStore = new SingleUserInMemoryCredentialStore
39 {
40 ConsumerKey = ConfigurationManager.AppSettings["consumerKey"],
41 ConsumerSecret = ConfigurationManager.AppSettings["consumerSecret"],
42 OAuthToken = accessToken.Token,
43 OAuthTokenSecret = accessToken.TokenSecret,
44 UserID = (UInt32)user.Id,
45 ScreenName = user.ScreenName
46 }
47 };
48 await authTwitter.AuthorizeAsync();
49 var twitterCtx = new TwitterContext(authTwitter);
50 var verifyResponse =
51 await (from acct in twitterCtx.Account
52 where (acct.Type == AccountType.VerifyCredentials) && (acct.IncludeEmail == true)
53 select acct)
54 .SingleOrDefaultAsync();
55
56 if (verifyResponse != null && verifyResponse.User != null)
57 {
58 User twitterUser = verifyResponse.User;
59
60 //assign email to existing authentication object
61 if (twitterUser != null)
62 {
63 ProfileGuideVM userVM = new ProfileGuideVM();
64 if (twitterUser.Name != null)
65 {
66 string[] names = twitterUser.Name.Split(' ');
67 userVM.FirstName = names[0];
68 userVM.LastName = names[1];
69 }
70 userVM.socialid = twitterUser.UserIDResponse;
71 userVM.PG_Email = twitterUser.Email;
72 userVM.RoleName = role_name;
73 userVM.Provider = "Twitter".ToString();
74 userVM.RoleId = _ProfileGuideRepository.getRoleIdByName(userVM.RoleName);
75 userVM.ProfileImageBase64 = twitterUser.ProfileBackgroundImageUrl;
76 string id = twitterUser.UserIDResponse;
77 string email = twitterUser.Email;
78 string provider = "Twitter".ToString();
79 string socialid = twitterUser.UserIDResponse;
80
81 var checkSocialId = new UserRepository().IsUserExists(userVM.Provider, userVM.socialid, userVM.RoleId);
82 if (checkSocialId)
83 {
84 var userInfo = new UserRepository().Login(new ViewModel.LoginVM { Login_Username = userVM.PG_Email, Login_Type = userVM.RoleName, socialid = userVM.socialid, provider = userVM.Provider });
85 if (userInfo != null && userInfo.IsActive == true && userInfo.IsRegistered == true)
86 {
87 //return Redirect("http://localhost:55402/aspLoginView.aspx?" + "UserId=" + userInfo.PG_id + "&email=" + userInfo.PG_Email + "&usertype=" + userInfo.RoleName + "&socialId=" + socialid);
88
89 return Redirect("http://localhost:55402/aspLoginView.aspx?" + "UserId=" + userVM.PG_id + "&email=" + userVM.PG_Email + "&usertype=" + userVM.RoleName);
90 }
91 }
92 else
93 {
94 if (userVM.ProfileImageBase64 != null)
95 {
96 // Generate Profile With Base64 Format
97 WebClient wc = new WebClient();
98 byte[] bytes = wc.DownloadData(userVM.ProfileImageBase64);
99 var socialProfileimg = "data:image/jpeg;base64," + Convert.ToBase64String(bytes);
100 Width = 460;
101 Height = 700;
102 userVM.ProfileImage = socialProfileimg != null ? SaveImageFromBase64(socialProfileimg, userVM.ProfileImageBase64, ConstVal.SocialProfileImage) : userVM.ProfileImage;
103 }
104
105 //Generate DummyPassword
106 var dummy_PWD = RandomString(3) + "_" + DateTime.Now.ToString("dd_MM_yyyy_hh_mm_ss");
107 userVM.PG_password = dummy_PWD;
108
109 var userinfo = _ProfileGuideRepository.SaveProfile(userVM);
110
111 if (userinfo.PG_id == 0 && userinfo.RoleName != "Traveller" && userinfo.IsRegistered == true && userinfo.IsActive == false)
112 {
113 string body = "";
114 string ToMail = ConfigurationManager.AppSettings["AdminMailId"];
115
116 body += "Hello dear admin. \n";
117 body += "We have mail for new " + userVM.RoleName + " Registrtion Request.<br /><br />";
118 body += "<b>" + userinfo.RoleName + " Name : </b>" + userinfo.FirstName + " " + userinfo.LastName + "<br /><br />";
119 body += "<b>Note</b> : You can Accept or Decline this registration request from your admin login.<br /><br />";
120 body += "Thank You.";
121
122 MailManager mm = new MailManager();
123 mm.SendMail(ToMail, MailSubject.NewRegistration + " from(" + userinfo.PG_Email + ")", body);
124 return Redirect("http://localhost:55402/asploginview.aspx?" + "userid=" + userinfo.PG_id + "&email=" + userinfo.PG_Email + "&usertype=" + userinfo.RoleName);
125
126 //return Redirect("http://localhost:55402/aspLoginView.aspx?" + "UserId=" + userVM.PG_id + "&email=" + userVM.PG_Email + "&usertype=" + userVM.RoleName);
127 }
128 return Redirect("http://localhost:55402/asploginview.aspx?" + "userid=" + userinfo.PG_id + "&email=" + userinfo.PG_Email + "&usertype=" + userinfo.RoleName);
129
130 //return Redirect("http://localhost:55402/aspLoginView.aspx?" + "UserId=" + userinfo.PG_id + "&email=" + userinfo.PG_Email + "&usertype=" + userinfo.RoleName + "&socialId=" + socialid);
131 }
132 }
133 }
134 return Success(Messages.SUCCESS, user);
135 }
136 catch (Exception ex)
137 {
138 return Error(ex.Message.ToString());
139 }
140
141 }