This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| web-integration:c-sharp-example [2019/08/05 11:21] tjotov | web-integration:c-sharp-example [2019/08/05 11:27] (current) tjotov | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| C# relies on Web services for ADUCID - or WSA, see [[web-integration: | C# relies on Web services for ADUCID - or WSA, see [[web-integration: | ||
| - | === Import WSDL into your project in Visual Studio. | + | Import WSDL into your project in Visual Studio. | 
| Create an instance of **AducidApiJsonServiceClient**. | Create an instance of **AducidApiJsonServiceClient**. | ||
| Line 53: | Line 53: | ||
| </ | </ | ||
| - | OperationArgument is a simple object | ||
| - | <sxh csharp> | ||
| - | public class OperationArgument | ||
| - | { | ||
| - | public String peigReturnName { get; set; } | ||
| - | public int qrCodePictureHeight { get; set; } | ||
| - | public int qrCodePictureWidth { get; set; } | ||
| - | public String id { get; set; } | ||
| - | public Boolean generateQrCodePicture { get; set; } | ||
| - | } | ||
| - | </ | ||
| === Create WSA proxy === | === Create WSA proxy === | ||
| Just simple " | Just simple " | ||
| <sxh csharp> | <sxh csharp> | ||
| - | var aducid = new AducidApiJsonServiceClient(); | + | //We have to " | 
| - | string host = "http://" | + |  | 
| - | var response = aducid.getStatus((string)context.Session[" | + |  | 
| - | context.Response.ContentType = "text/plain"; | + | try | 
| - | context.Response.Write(response); | + | { | 
| + | string query = context.Request.QueryString.ToString(); | ||
| + | var queryParsed = HttpUtility.ParseQueryString(query); | ||
| + | //get id from session based on GUID | ||
| + | var id = queryParsed["id"]; | ||
| + | //get response from AIM | ||
| + |  | ||
| + | |||
| + | //send response to Web API | ||
| + |  | ||
| + | } | ||
| + | catch (System.ServiceModel.FaultException e) | ||
| + | { | ||
| + |  | ||
| + | var msgFault = e.CreateMessageFault(); | ||
| + | var errorResult = msgFault.GetDetail< | ||
| + | //get error as JSON | ||
| + | var response = aducid.toErrorJson(errorResult, | ||
| + | // | ||
| + |  | ||
| + | } | ||
| </ | </ | ||
| Line 79: | Line 89: | ||
| <sxh csharp> | <sxh csharp> | ||
| - | var aducid = new AducidApiJsonServiceClient(); | + |  | 
| - | //read authId from you session | + |  | 
| - | string authId = (string)context.Session[" | + | var queryParsed = HttpUtility.ParseQueryString(query); | 
| - | var aducidResult = aducid.getResult(authId, | + | var id = queryParsed[" | 
| - | //parse json | + |  | 
| - | dynamic aducidResultObj = JsonConvert.DeserializeObject(aducidResult); | + | string authId = (string)context.Session[id]; | 
| - | // | + | context.Response.ContentType = "application/ | 
| - | var udi = aducidResultObj.data.userDatabaseIndex; | + | try | 
| - | //key to further ADUCID operetions on user object | + | { | 
| - | string | + | //call AIM to get operation result | 
| - | //prepare response | + |  | 
| - | var response = aducid.endAuthenticationSession(authId, | + | // | 
| - | context.Response.ContentType = "text/plain"; | + | var udi = aducidResult.userDatabaseIndex; | 
| - | //OK do something with your session | + | //authKey | 
| - | //... | + |  | 
| - | //send response | + | //finalize authentication and get respoonse form Web API | 
| - | context.Response.Write(response); | + | var response = aducid.endAuthenticationSession(authId, | 
| + | // | ||
| + | FormsAuthentication.SetAuthCookie(" | ||
| + | //send Web API the result - by default it will redirect to URI we provided earlier; for iOS PEIG opens this URI directly | ||
| + |  | ||
| + | } | ||
| + | catch (System.ServiceModel.FaultException e) | ||
| + | { | ||
| + |  | ||
| + | var msgFault = e.CreateMessageFault(); | ||
| + | var errorResult = msgFault.GetDetail< | ||
| + | //get error as JSON | ||
| + | var response | ||
| + | //send JSON to Web API | ||
| + | context.Response.Write(response); | ||
| + | } | ||
| </ | </ | ||
| === Prepare a web page === | === Prepare a web page === | ||
| - | This page should contain [[integration-api:start|ADUCID Integration | + | This page should contain [[web-integration:client-side|Client | 
| Provide start, check and proxy Url. | Provide start, check and proxy Url. | ||
| - | < | ||
| - |  | ||
| - |  | ||
| - |  | ||
| - | </ | ||
| Override what should be done after authentication / operation: | Override what should be done after authentication / operation: | ||
| - | <sxh> | + | < | 
| - |  | + | <script type=" | 
| + | var aducid = new ADUCID(); | ||
| + | |||
| + | $(document).ready(function () { | ||
| + | aducid.setAuthentication(); | ||
| + | //operation start URL | ||
| + | aducid.setStartOperationUrl(" | ||
| + | //operation check URL | ||
| + | aducid.setResultOperationUrl(" | ||
| + | //proxy helper URL | ||
| + | aducid.setProxyUrl(" | ||
| + | |||
| + | //text under QR code | ||
| + | aducid.showQRHint = function (param) { | ||
| + | $('# | ||
| + | } | ||
| + | |||
| + | //running operation texr | ||
| + | aducid.showRunningHint = function (param) { | ||
| + | $('# | ||
| + | } | ||
| + | |||
| + | //called when auth finished (except iOS) | ||
| + |  | ||
| + | alert(" | ||
| if (result.status == " | if (result.status == " | ||
| - |  | + | location.href = result.redirect; | 
| - | //location.reload(); | + | |
| } | } | ||
| else { | else { | ||
| - |  | + |  | 
| } | } | ||
| } | } | ||
| + | |||
| + | //handle PEIG not installed error | ||
| + | aducid.showPeigError = function () { | ||
| + | showDialog(" | ||
| + | location.reload(); | ||
| + | }); | ||
| + | } | ||
| + | |||
| + | //handle communication or other error | ||
| + | aducid.handleError = function (result) { | ||
| + | showDialog(" | ||
| + | location.href = result.redirect; | ||
| + | }); | ||
| + | } | ||
| + | |||
| + | //GUI mapping | ||
| + | //button associated to start auth | ||
| + | aducid.setButton($("# | ||
| + | //locatino of QR code img | ||
| + | aducid.setQrCode($("# | ||
| + | //location of text under QR code | ||
| + | aducid.setQrHint($("# | ||
| + | |||
| + | //start; false as we wait for button click or qr scan | ||
| + | aducid.init(false); | ||
| + | }); | ||
| + | </ | ||
| </ | </ | ||
| Line 123: | Line 193: | ||
| <sxh html> | <sxh html> | ||
| - | < | + | <div class=" | 
| + |  | ||
| <div class=" | <div class=" | ||
| <div class=" | <div class=" | ||
| Line 149: | Line 220: | ||
| </ | </ | ||
| </ | </ | ||
| + | </ | ||
| </ | </ | ||