├── .gitattributes
├── .gitignore
├── README.md
├── XamarinFormsOIDCSample.API
├── App_Start
│ └── WebApiConfig.cs
├── Controllers
│ └── CowsController.cs
├── Properties
│ ├── AssemblyInfo.cs
│ └── PublishProfiles
│ │ └── xamarinoidcsampleapi - Web Deploy.pubxml
├── Startup.cs
├── Web.Debug.config
├── Web.Release.config
├── Web.config
├── XamarinFormsOIDCSample.API.csproj
└── packages.config
├── XamarinFormsOIDCSample.Client
├── XamarinFormsOIDCSample.Client.Droid
│ ├── Assets
│ │ └── AboutAssets.txt
│ ├── MainActivity.cs
│ ├── Properties
│ │ ├── AndroidManifest.xml
│ │ └── AssemblyInfo.cs
│ ├── Resources
│ │ ├── AboutResources.txt
│ │ ├── Resource.Designer.cs
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-xhdpi
│ │ │ └── icon.png
│ │ ├── drawable-xxhdpi
│ │ │ └── icon.png
│ │ └── drawable
│ │ │ └── icon.png
│ ├── XamarinFormsOIDCSample.Client.Droid.csproj
│ ├── app.config
│ └── packages.config
├── XamarinFormsOIDCSample.Client.WinPhone
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── Assets
│ │ ├── AlignmentGrid.png
│ │ ├── ApplicationIcon.png
│ │ └── Tiles
│ │ │ ├── FlipCycleTileLarge.png
│ │ │ ├── FlipCycleTileMedium.png
│ │ │ ├── FlipCycleTileSmall.png
│ │ │ ├── IconicTileMediumLarge.png
│ │ │ └── IconicTileSmall.png
│ ├── LocalizedStrings.cs
│ ├── MainPage.xaml
│ ├── MainPage.xaml.cs
│ ├── Properties
│ │ ├── AppManifest.xml
│ │ ├── AssemblyInfo.cs
│ │ └── WMAppManifest.xml
│ ├── README_FIRST.txt
│ ├── Resources
│ │ ├── AppResources.Designer.cs
│ │ └── AppResources.resx
│ ├── SplashScreenImage.jpg
│ ├── Toolkit.Content
│ │ ├── ApplicationBar.Add.png
│ │ ├── ApplicationBar.Cancel.png
│ │ ├── ApplicationBar.Check.png
│ │ ├── ApplicationBar.Delete.png
│ │ └── ApplicationBar.Select.png
│ ├── XamarinFormsOIDCSample.Client.WinPhone.csproj
│ ├── app.config
│ └── packages.config
├── XamarinFormsOIDCSample.Client.iOS
│ ├── AppDelegate.cs
│ ├── Entitlements.plist
│ ├── Info.plist
│ ├── Main.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Resources
│ │ ├── Default-568h@2x.png
│ │ ├── Default-Portrait.png
│ │ ├── Default-Portrait@2x.png
│ │ ├── Default.png
│ │ ├── Default@2x.png
│ │ ├── Icon-60@2x.png
│ │ ├── Icon-60@3x.png
│ │ ├── Icon-76.png
│ │ ├── Icon-76@2x.png
│ │ ├── Icon-Small-40.png
│ │ ├── Icon-Small-40@2x.png
│ │ ├── Icon-Small-40@3x.png
│ │ ├── Icon-Small.png
│ │ ├── Icon-Small@2x.png
│ │ ├── Icon-Small@3x.png
│ │ └── LaunchScreen.storyboard
│ ├── XamarinFormsOIDCSample.Client.iOS.csproj
│ ├── app.config
│ ├── iTunesArtwork
│ ├── iTunesArtwork@2x
│ └── packages.config
└── XamarinFormsOIDCSample.Client
│ ├── App.cs
│ ├── GettingStarted.Xamarin
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── Views
│ ├── LoginView.xaml
│ └── LoginView.xaml.cs
│ ├── XamarinFormsOIDCSample.Client.csproj
│ ├── app.config
│ └── packages.config
├── XamarinFormsOIDCSample.IdentityServer
├── Certificates
│ ├── DevRoot.cer
│ └── idsrv3test.cer
├── Config
│ ├── Clients.cs
│ ├── Scopes.cs
│ └── Users.cs
├── Properties
│ ├── AssemblyInfo.cs
│ └── PublishProfiles
│ │ └── xamarinoidcsamplests - Web Deploy.pubxml
├── Startup.cs
├── Web.Debug.config
├── Web.Release.config
├── Web.config
├── XamarinFormsOIDCSample.IdentityServer.csproj
└── packages.config
└── XamarinFormsOIDCSample.sln
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | build/
21 | bld/
22 | [Bb]in/
23 | [Oo]bj/
24 |
25 | # Visual Studio 2015 cache/options directory
26 | .vs/
27 |
28 | # MSTest test Results
29 | [Tt]est[Rr]esult*/
30 | [Bb]uild[Ll]og.*
31 |
32 | # NUNIT
33 | *.VisualState.xml
34 | TestResult.xml
35 |
36 | # Build Results of an ATL Project
37 | [Dd]ebugPS/
38 | [Rr]eleasePS/
39 | dlldata.c
40 |
41 | # DNX
42 | project.lock.json
43 | artifacts/
44 |
45 | *_i.c
46 | *_p.c
47 | *_i.h
48 | *.ilk
49 | *.meta
50 | *.obj
51 | *.pch
52 | *.pdb
53 | *.pgc
54 | *.pgd
55 | *.rsp
56 | *.sbr
57 | *.tlb
58 | *.tli
59 | *.tlh
60 | *.tmp
61 | *.tmp_proj
62 | *.log
63 | *.vspscc
64 | *.vssscc
65 | .builds
66 | *.pidb
67 | *.svclog
68 | *.scc
69 |
70 | # Chutzpah Test files
71 | _Chutzpah*
72 |
73 | # Visual C++ cache files
74 | ipch/
75 | *.aps
76 | *.ncb
77 | *.opensdf
78 | *.sdf
79 | *.cachefile
80 |
81 | # Visual Studio profiler
82 | *.psess
83 | *.vsp
84 | *.vspx
85 |
86 | # TFS 2012 Local Workspace
87 | $tf/
88 |
89 | # Guidance Automation Toolkit
90 | *.gpState
91 |
92 | # ReSharper is a .NET coding add-in
93 | _ReSharper*/
94 | *.[Rr]e[Ss]harper
95 | *.DotSettings.user
96 |
97 | # JustCode is a .NET coding add-in
98 | .JustCode
99 |
100 | # TeamCity is a build add-in
101 | _TeamCity*
102 |
103 | # DotCover is a Code Coverage Tool
104 | *.dotCover
105 |
106 | # NCrunch
107 | _NCrunch_*
108 | .*crunch*.local.xml
109 |
110 | # MightyMoose
111 | *.mm.*
112 | AutoTest.Net/
113 |
114 | # Web workbench (sass)
115 | .sass-cache/
116 |
117 | # Installshield output folder
118 | [Ee]xpress/
119 |
120 | # DocProject is a documentation generator add-in
121 | DocProject/buildhelp/
122 | DocProject/Help/*.HxT
123 | DocProject/Help/*.HxC
124 | DocProject/Help/*.hhc
125 | DocProject/Help/*.hhk
126 | DocProject/Help/*.hhp
127 | DocProject/Help/Html2
128 | DocProject/Help/html
129 |
130 | # Click-Once directory
131 | publish/
132 |
133 | # Publish Web Output
134 | *.[Pp]ublish.xml
135 | *.azurePubxml
136 | ## TODO: Comment the next line if you want to checkin your
137 | ## web deploy settings but do note that will include unencrypted
138 | ## passwords
139 | #*.pubxml
140 |
141 | *.publishproj
142 |
143 | # NuGet Packages
144 | *.nupkg
145 | # The packages folder can be ignored because of Package Restore
146 | **/packages/*
147 | # except build/, which is used as an MSBuild target.
148 | !**/packages/build/
149 | # Uncomment if necessary however generally it will be regenerated when needed
150 | #!**/packages/repositories.config
151 |
152 | # Windows Azure Build Output
153 | csx/
154 | *.build.csdef
155 |
156 | # Windows Store app package directory
157 | AppPackages/
158 |
159 | # Visual Studio cache files
160 | # files ending in .cache can be ignored
161 | *.[Cc]ache
162 | # but keep track of directories ending in .cache
163 | !*.[Cc]ache/
164 |
165 | # Others
166 | ClientBin/
167 | [Ss]tyle[Cc]op.*
168 | ~$*
169 | *~
170 | *.dbmdl
171 | *.dbproj.schemaview
172 | *.pfx
173 | *.publishsettings
174 | node_modules/
175 | orleans.codegen.cs
176 |
177 | # RIA/Silverlight projects
178 | Generated_Code/
179 |
180 | # Backup & report files from converting an old project file
181 | # to a newer Visual Studio version. Backup files are not needed,
182 | # because we have git ;-)
183 | _UpgradeReport_Files/
184 | Backup*/
185 | UpgradeLog*.XML
186 | UpgradeLog*.htm
187 |
188 | # SQL Server files
189 | *.mdf
190 | *.ldf
191 |
192 | # Business Intelligence projects
193 | *.rdl.data
194 | *.bim.layout
195 | *.bim_*.settings
196 |
197 | # Microsoft Fakes
198 | FakesAssemblies/
199 |
200 | # Node.js Tools for Visual Studio
201 | .ntvs_analysis.dat
202 |
203 | # Visual Studio 6 build log
204 | *.plg
205 |
206 | # Visual Studio 6 workspace options file
207 | *.opt
208 |
209 | # LightSwitch generated files
210 | GeneratedArtifacts/
211 | _Pvt_Extensions/
212 | ModelManifest.xml
213 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # XamarinFormsOIDCSample
2 | Xamarin Forms OAuth 2.0 / OpenID Connect Sample with IdentityServer3
3 |
4 | Related blog post: https://www.kevindockx.com/working-with-oauth2-and-openid-connect-from-a-xamarin-forms-application-using-identityserver3/
5 |
6 | Note: in the sample, I deployed IdSrv & the API to Azure. If you want to run this locally, you have to make sure that you can access these from your Xamarin application. To enable this with IIS Express, have a look at https://azure.microsoft.com/en-us/documentation/articles/mobile-services-dotnet-backend-how-to-configure-iis-express/
7 |
8 | Even though that post is aimed at Azure Mobile Services, it nicely explains the steps you have to take to configure IIS Express (& your machine) so you can access services hosted on your IIS Express from a Xamarin application, running in an emulator.
9 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.API/App_Start/WebApiConfig.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Web.Http;
5 | using Newtonsoft.Json.Serialization;
6 |
7 | namespace XamarinFormsOIDCSample.API
8 | {
9 | public static class WebApiConfig
10 | {
11 | public static HttpConfiguration Register()
12 | {
13 | // Web API configuration and services
14 | var config = new HttpConfiguration();
15 |
16 | // Web API routes
17 | config.MapHttpAttributeRoutes();
18 |
19 | config.Routes.MapHttpRoute(
20 | name: "DefaultApi",
21 | routeTemplate: "api/{controller}/{id}",
22 | defaults: new { id = RouteParameter.Optional }
23 | );
24 |
25 | // no XML
26 | config.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
27 |
28 | // results should come out
29 | // - with indentation for readability
30 | // - in camelCase
31 |
32 | var json = config.Formatters.JsonFormatter;
33 | json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
34 | json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
35 |
36 | return config;
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.API/Controllers/CowsController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Net;
5 | using System.Net.Http;
6 | using System.Web.Http;
7 |
8 | namespace XamarinFormsOIDCSample.API.Controllers
9 | {
10 | public class CowsController : ApiController
11 | {
12 | [Route("api/cows")]
13 | public IHttpActionResult Get()
14 | {
15 | return Ok(new [] { new { Name = "Bella", SoundsLike = "Moooh" } });
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.API/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("XamarinFormsOIDCSample.API")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("XamarinFormsOIDCSample.API")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("7d6ff2a9-42c1-4f89-9b4e-cea02b01e998")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Revision and Build Numbers
33 | // by using the '*' as shown below:
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.API/Properties/PublishProfiles/xamarinoidcsampleapi - Web Deploy.pubxml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 | MSDeploy
9 | AzureWebSite
10 | Release
11 | Any CPU
12 | http://xamarinoidcsampleapi.azurewebsites.net
13 | True
14 | False
15 | xamarinoidcsampleapi.scm.azurewebsites.net:443
16 | xamarinoidcsampleapi
17 |
18 | True
19 | WMSVC
20 | True
21 | $xamarinoidcsampleapi
22 | <_SavePWD>True
23 | <_DestinationType>AzureWebSite
24 |
25 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.API/Startup.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Web.Http;
7 | using IdentityServer3.AccessTokenValidation;
8 | using Owin;
9 |
10 | namespace XamarinFormsOIDCSample.API
11 | {
12 | public class Startup
13 | {
14 | public object JwtSecurityTokenHandler { get; private set; }
15 |
16 | public void Configuration(IAppBuilder app)
17 | {
18 |
19 | app.UseIdentityServerBearerTokenAuthentication(new
20 | IdentityServerBearerTokenAuthenticationOptions
21 | {
22 | Authority = "https://xamarinoidcsamplests.azurewebsites.net/identity",
23 | RequiredScopes = new[] { "cowsapi" }
24 | });
25 |
26 | var httpConfig = WebApiConfig.Register();
27 |
28 | // enable authorization
29 | httpConfig.Filters.Add(new AuthorizeAttribute());
30 | // configure webapi
31 | app.UseWebApi(httpConfig);
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.API/Web.Debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
29 |
30 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.API/Web.Release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
19 |
30 |
31 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.API/Web.config:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.API/XamarinFormsOIDCSample.API.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Debug
8 | AnyCPU
9 |
10 |
11 | 2.0
12 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}
13 | {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
14 | Library
15 | Properties
16 | XamarinFormsOIDCSample.API
17 | XamarinFormsOIDCSample.API
18 | v4.5.2
19 | true
20 | 44300
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | true
30 | full
31 | false
32 | bin\
33 | DEBUG;TRACE
34 | prompt
35 | 4
36 |
37 |
38 | pdbonly
39 | true
40 | bin\
41 | TRACE
42 | prompt
43 | 4
44 |
45 |
46 |
47 | ..\packages\IdentityModel.1.2.1\lib\net45\IdentityModel.Net45.dll
48 | True
49 |
50 |
51 | ..\packages\IdentityServer3.AccessTokenValidation.2.5.0\lib\net45\IdentityServer3.AccessTokenValidation.dll
52 | True
53 |
54 |
55 | ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
56 | True
57 |
58 |
59 |
60 | ..\packages\Microsoft.IdentityModel.Protocol.Extensions.1.0.2.206221351\lib\net45\Microsoft.IdentityModel.Protocol.Extensions.dll
61 | True
62 |
63 |
64 | ..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll
65 | True
66 |
67 |
68 | ..\packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
69 | True
70 |
71 |
72 | ..\packages\Microsoft.Owin.Security.3.0.1\lib\net45\Microsoft.Owin.Security.dll
73 | True
74 |
75 |
76 | ..\packages\Microsoft.Owin.Security.Jwt.3.0.1\lib\net45\Microsoft.Owin.Security.Jwt.dll
77 | True
78 |
79 |
80 | ..\packages\Microsoft.Owin.Security.OAuth.3.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll
81 | True
82 |
83 |
84 | ..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll
85 | True
86 |
87 |
88 | ..\packages\Owin.1.0\lib\net40\Owin.dll
89 | True
90 |
91 |
92 |
93 | ..\packages\System.IdentityModel.Tokens.Jwt.4.0.2.206221351\lib\net45\System.IdentityModel.Tokens.Jwt.dll
94 | True
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 | ..\packages\Microsoft.AspNet.WebApi.Owin.5.2.3\lib\net45\System.Web.Http.Owin.dll
109 | True
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 | ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll
122 |
123 |
124 | ..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll
125 |
126 |
127 | ..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 | Web.config
144 |
145 |
146 | Web.config
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 | 10.0
155 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 | True
165 | True
166 | 10049
167 | /
168 | https://localhost:44300/
169 | False
170 | False
171 |
172 |
173 | False
174 |
175 |
176 |
177 |
178 |
179 |
180 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
181 |
182 |
183 |
184 |
185 |
192 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.API/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with you package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
20 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | using Android.App;
4 | using Android.Content.PM;
5 | using Android.Runtime;
6 | using Android.Views;
7 | using Android.Widget;
8 | using Android.OS;
9 |
10 | namespace XamarinFormsOIDCSample.Client.Droid
11 | {
12 | [Activity(Label = "XamarinFormsOIDCSample.Client", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
13 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
14 | {
15 | protected override void OnCreate(Bundle bundle)
16 | {
17 | base.OnCreate(bundle);
18 |
19 | global::Xamarin.Forms.Forms.Init(this, bundle);
20 | LoadApplication(new App());
21 | }
22 | }
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 | using Android.App;
5 |
6 | // General Information about an assembly is controlled through the following
7 | // set of attributes. Change these attribute values to modify the information
8 | // associated with an assembly.
9 | [assembly: AssemblyTitle("XamarinFormsOIDCSample.Client.Droid")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("XamarinFormsOIDCSample.Client.Droid")]
14 | [assembly: AssemblyCopyright("Copyright © 2014")]
15 | [assembly: AssemblyTrademark("")]
16 | [assembly: AssemblyCulture("")]
17 | [assembly: ComVisible(false)]
18 |
19 | // Version information for an assembly consists of the following four values:
20 | //
21 | // Major Version
22 | // Minor Version
23 | // Build Number
24 | // Revision
25 | //
26 | // You can specify all the values or you can default the Build and Revision Numbers
27 | // by using the '*' as shown below:
28 | // [assembly: AssemblyVersion("1.0.*")]
29 | [assembly: AssemblyVersion("1.0.0.0")]
30 | [assembly: AssemblyFileVersion("1.0.0.0")]
31 |
32 | // Add some common permissions, these can be removed if not needed
33 | [assembly: UsesPermission(Android.Manifest.Permission.Internet)]
34 | [assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
35 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Resources/AboutResources.txt:
--------------------------------------------------------------------------------
1 | Images, layout descriptions, binary blobs and string dictionaries can be included
2 | in your application as resource files. Various Android APIs are designed to
3 | operate on the resource IDs instead of dealing with images, strings or binary blobs
4 | directly.
5 |
6 | For example, a sample Android app that contains a user interface layout (main.xml),
7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
8 | would keep its resources in the "Resources" directory of the application:
9 |
10 | Resources/
11 | drawable-hdpi/
12 | icon.png
13 |
14 | drawable-ldpi/
15 | icon.png
16 |
17 | drawable-mdpi/
18 | icon.png
19 |
20 | layout/
21 | main.xml
22 |
23 | values/
24 | strings.xml
25 |
26 | In order to get the build system to recognize Android resources, set the build action to
27 | "AndroidResource". The native Android APIs do not operate directly with filenames, but
28 | instead operate on resource IDs. When you compile an Android application that uses resources,
29 | the build system will package the resources for distribution and generate a class called
30 | "Resource" that contains the tokens for each one of the resources included. For example,
31 | for the above Resources layout, this is what the Resource class would expose:
32 |
33 | public class Resource {
34 | public class drawable {
35 | public const int icon = 0x123;
36 | }
37 |
38 | public class layout {
39 | public const int main = 0x456;
40 | }
41 |
42 | public class strings {
43 | public const int first_string = 0xabc;
44 | public const int second_string = 0xbcd;
45 | }
46 | }
47 |
48 | You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main
49 | to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
50 | string in the dictionary file values/strings.xml.
51 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Resources/drawable-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Resources/drawable-hdpi/icon.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Resources/drawable-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Resources/drawable-xhdpi/icon.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Resources/drawable-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Resources/drawable-xxhdpi/icon.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Resources/drawable/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/Resources/drawable/icon.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/XamarinFormsOIDCSample.Client.Droid.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 8.0.30703
7 | 2.0
8 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}
9 | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10 | Library
11 | Properties
12 | XamarinFormsOIDCSample.Client.Droid
13 | XamarinFormsOIDCSample.Client.Droid
14 | 512
15 | true
16 | Resources\Resource.Designer.cs
17 | Off
18 | Properties\AndroidManifest.xml
19 | true
20 | v6.0
21 | armeabi,armeabi-v7a,x86
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | true
31 | full
32 | false
33 | bin\Debug\
34 | DEBUG;TRACE
35 | prompt
36 | 4
37 | True
38 | None
39 |
40 |
41 | pdbonly
42 | true
43 | bin\Release\
44 | TRACE
45 | prompt
46 | 4
47 | False
48 | SdkOnly
49 |
50 |
51 |
52 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\MonoAndroid10\FormsViewGroup.dll
53 | True
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | ..\..\packages\Xamarin.Android.Support.Design.23.0.1.3\lib\MonoAndroid403\Xamarin.Android.Support.Design.dll
63 | True
64 |
65 |
66 | ..\..\packages\Xamarin.Android.Support.v4.23.0.1.3\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll
67 | True
68 |
69 |
70 | ..\..\packages\Xamarin.Android.Support.v7.AppCompat.23.0.1.3\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll
71 | True
72 |
73 |
74 | ..\..\packages\Xamarin.Android.Support.v7.CardView.23.0.1.3\lib\MonoAndroid403\Xamarin.Android.Support.v7.CardView.dll
75 | True
76 |
77 |
78 | ..\..\packages\Xamarin.Android.Support.v7.MediaRouter.23.0.1.3\lib\MonoAndroid403\Xamarin.Android.Support.v7.MediaRouter.dll
79 | True
80 |
81 |
82 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\MonoAndroid10\Xamarin.Forms.Core.dll
83 | True
84 |
85 |
86 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\MonoAndroid10\Xamarin.Forms.Platform.dll
87 | True
88 |
89 |
90 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll
91 | True
92 |
93 |
94 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\MonoAndroid10\Xamarin.Forms.Xaml.dll
95 | True
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 | XamarinFormsOIDCSample.Client
121 |
122 |
123 |
124 |
125 |
126 |
127 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
128 |
129 |
130 |
131 |
138 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.Droid/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/App.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.Resources;
4 | using System.Windows;
5 | using System.Windows.Markup;
6 | using System.Windows.Navigation;
7 | using Microsoft.Phone.Controls;
8 | using Microsoft.Phone.Shell;
9 | using XamarinFormsOIDCSample.Client.WinPhone.Resources;
10 |
11 | namespace XamarinFormsOIDCSample.Client.WinPhone
12 | {
13 | public partial class App : Application
14 | {
15 | ///
16 | /// Provides easy access to the root frame of the Phone Application.
17 | ///
18 | /// The root frame of the Phone Application.
19 | public static PhoneApplicationFrame RootFrame { get; private set; }
20 |
21 | ///
22 | /// Constructor for the Application object.
23 | ///
24 | public App()
25 | {
26 | // Global handler for uncaught exceptions.
27 | UnhandledException += Application_UnhandledException;
28 |
29 | // Standard XAML initialization
30 | InitializeComponent();
31 |
32 | // Phone-specific initialization
33 | InitializePhoneApplication();
34 |
35 | // Language display initialization
36 | InitializeLanguage();
37 |
38 | // Show graphics profiling information while debugging.
39 | if (Debugger.IsAttached)
40 | {
41 | // Display the current frame rate counters.
42 | Application.Current.Host.Settings.EnableFrameRateCounter = true;
43 |
44 | // Show the areas of the app that are being redrawn in each frame.
45 | //Application.Current.Host.Settings.EnableRedrawRegions = true;
46 |
47 | // Enable non-production analysis visualization mode,
48 | // which shows areas of a page that are handed off to GPU with a colored overlay.
49 | //Application.Current.Host.Settings.EnableCacheVisualization = true;
50 |
51 | // Prevent the screen from turning off while under the debugger by disabling
52 | // the application's idle detection.
53 | // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
54 | // and consume battery power when the user is not using the phone.
55 | PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
56 | }
57 |
58 | }
59 |
60 | // Code to execute when the application is launching (eg, from Start)
61 | // This code will not execute when the application is reactivated
62 | private void Application_Launching(object sender, LaunchingEventArgs e)
63 | {
64 | }
65 |
66 | // Code to execute when the application is activated (brought to foreground)
67 | // This code will not execute when the application is first launched
68 | private void Application_Activated(object sender, ActivatedEventArgs e)
69 | {
70 | }
71 |
72 | // Code to execute when the application is deactivated (sent to background)
73 | // This code will not execute when the application is closing
74 | private void Application_Deactivated(object sender, DeactivatedEventArgs e)
75 | {
76 | }
77 |
78 | // Code to execute when the application is closing (eg, user hit Back)
79 | // This code will not execute when the application is deactivated
80 | private void Application_Closing(object sender, ClosingEventArgs e)
81 | {
82 | }
83 |
84 | // Code to execute if a navigation fails
85 | private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
86 | {
87 | if (Debugger.IsAttached)
88 | {
89 | // A navigation has failed; break into the debugger
90 | Debugger.Break();
91 | }
92 | }
93 |
94 | // Code to execute on Unhandled Exceptions
95 | private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
96 | {
97 | if (Debugger.IsAttached)
98 | {
99 | // An unhandled exception has occurred; break into the debugger
100 | Debugger.Break();
101 | }
102 | }
103 |
104 | #region Phone application initialization
105 |
106 | // Avoid double-initialization
107 | private bool phoneApplicationInitialized = false;
108 |
109 | // Do not add any additional code to this method
110 | private void InitializePhoneApplication()
111 | {
112 | if (phoneApplicationInitialized)
113 | return;
114 |
115 | // Create the frame but don't set it as RootVisual yet; this allows the splash
116 | // screen to remain active until the application is ready to render.
117 | RootFrame = new PhoneApplicationFrame();
118 | RootFrame.Navigated += CompleteInitializePhoneApplication;
119 |
120 | // Handle navigation failures
121 | RootFrame.NavigationFailed += RootFrame_NavigationFailed;
122 |
123 | // Handle reset requests for clearing the backstack
124 | RootFrame.Navigated += CheckForResetNavigation;
125 |
126 | // Ensure we don't initialize again
127 | phoneApplicationInitialized = true;
128 | }
129 |
130 | // Do not add any additional code to this method
131 | private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
132 | {
133 | // Set the root visual to allow the application to render
134 | if (RootVisual != RootFrame)
135 | RootVisual = RootFrame;
136 |
137 | // Remove this handler since it is no longer needed
138 | RootFrame.Navigated -= CompleteInitializePhoneApplication;
139 | }
140 |
141 | private void CheckForResetNavigation(object sender, NavigationEventArgs e)
142 | {
143 | // If the app has received a 'reset' navigation, then we need to check
144 | // on the next navigation to see if the page stack should be reset
145 | if (e.NavigationMode == NavigationMode.Reset)
146 | RootFrame.Navigated += ClearBackStackAfterReset;
147 | }
148 |
149 | private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
150 | {
151 | // Unregister the event so it doesn't get called again
152 | RootFrame.Navigated -= ClearBackStackAfterReset;
153 |
154 | // Only clear the stack for 'new' (forward) and 'refresh' navigations
155 | if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
156 | return;
157 |
158 | // For UI consistency, clear the entire page stack
159 | while (RootFrame.RemoveBackEntry() != null)
160 | {
161 | ; // do nothing
162 | }
163 | }
164 |
165 | #endregion
166 |
167 | // Initialize the app's font and flow direction as defined in its localized resource strings.
168 | //
169 | // To ensure that the font of your application is aligned with its supported languages and that the
170 | // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
171 | // and ResourceFlowDirection should be initialized in each resx file to match these values with that
172 | // file's culture. For example:
173 | //
174 | // AppResources.es-ES.resx
175 | // ResourceLanguage's value should be "es-ES"
176 | // ResourceFlowDirection's value should be "LeftToRight"
177 | //
178 | // AppResources.ar-SA.resx
179 | // ResourceLanguage's value should be "ar-SA"
180 | // ResourceFlowDirection's value should be "RightToLeft"
181 | //
182 | // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
183 | //
184 | private void InitializeLanguage()
185 | {
186 | try
187 | {
188 | // Set the font to match the display language defined by the
189 | // ResourceLanguage resource string for each supported language.
190 | //
191 | // Fall back to the font of the neutral language if the Display
192 | // language of the phone is not supported.
193 | //
194 | // If a compiler error is hit then ResourceLanguage is missing from
195 | // the resource file.
196 | RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
197 |
198 | // Set the FlowDirection of all elements under the root frame based
199 | // on the ResourceFlowDirection resource string for each
200 | // supported language.
201 | //
202 | // If a compiler error is hit then ResourceFlowDirection is missing from
203 | // the resource file.
204 | FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
205 | RootFrame.FlowDirection = flow;
206 | }
207 | catch
208 | {
209 | // If an exception is caught here it is most likely due to either
210 | // ResourceLangauge not being correctly set to a supported language
211 | // code or ResourceFlowDirection is set to a value other than LeftToRight
212 | // or RightToLeft.
213 |
214 | if (Debugger.IsAttached)
215 | {
216 | Debugger.Break();
217 | }
218 |
219 | throw;
220 | }
221 | }
222 | }
223 | }
224 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/AlignmentGrid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/AlignmentGrid.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/ApplicationIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/ApplicationIcon.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/Tiles/FlipCycleTileLarge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/Tiles/FlipCycleTileLarge.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/Tiles/FlipCycleTileMedium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/Tiles/FlipCycleTileMedium.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/Tiles/FlipCycleTileSmall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/Tiles/FlipCycleTileSmall.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/Tiles/IconicTileMediumLarge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/Tiles/IconicTileMediumLarge.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/Tiles/IconicTileSmall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Assets/Tiles/IconicTileSmall.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/LocalizedStrings.cs:
--------------------------------------------------------------------------------
1 | using XamarinFormsOIDCSample.Client.WinPhone.Resources;
2 |
3 | namespace XamarinFormsOIDCSample.Client.WinPhone
4 | {
5 | ///
6 | /// Provides access to string resources.
7 | ///
8 | public class LocalizedStrings
9 | {
10 | private static AppResources _localizedResources = new AppResources();
11 |
12 | public AppResources LocalizedResources { get { return _localizedResources; } }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Net;
5 | using System.Windows;
6 | using System.Windows.Controls;
7 | using System.Windows.Navigation;
8 | using Microsoft.Phone.Controls;
9 | using Microsoft.Phone.Shell;
10 |
11 | namespace XamarinFormsOIDCSample.Client.WinPhone
12 | {
13 | public partial class MainPage : global::Xamarin.Forms.Platform.WinPhone.FormsApplicationPage
14 | {
15 | public MainPage()
16 | {
17 | InitializeComponent();
18 | SupportedOrientations = SupportedPageOrientation.PortraitOrLandscape;
19 |
20 | global::Xamarin.Forms.Forms.Init();
21 | LoadApplication(new XamarinFormsOIDCSample.Client.App());
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Properties/AppManifest.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 | using System.Resources;
5 |
6 | // General Information about an assembly is controlled through the following
7 | // set of attributes. Change these attribute values to modify the information
8 | // associated with an assembly.
9 | [assembly: AssemblyTitle("XamarinFormsOIDCSample.Client.WinPhone")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("XamarinFormsOIDCSample.Client.WinPhone")]
14 | [assembly: AssemblyCopyright("Copyright © 2014")]
15 | [assembly: AssemblyTrademark("")]
16 | [assembly: AssemblyCulture("")]
17 |
18 | // Setting ComVisible to false makes the types in this assembly not visible
19 | // to COM components. If you need to access a type in this assembly from
20 | // COM, set the ComVisible attribute to true on that type.
21 | [assembly: ComVisible(false)]
22 |
23 | // The following GUID is for the ID of the typelib if this project is exposed to COM
24 | [assembly: Guid("65077432-0c92-466b-b68d-911a8ec84f1d")]
25 |
26 | // Version information for an assembly consists of the following four values:
27 | //
28 | // Major Version
29 | // Minor Version
30 | // Build Number
31 | // Revision
32 | //
33 | // You can specify all the values or you can default the Revision and Build Numbers
34 | // by using the '*' as shown below:
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 | [assembly: NeutralResourcesLanguageAttribute("en-US")]
38 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Properties/WMAppManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Assets\ApplicationIcon.png
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | Assets\Tiles\FlipCycleTileSmall.png
21 | 0
22 | Assets\Tiles\FlipCycleTileMedium.png
23 | XamarinFormsOIDCSample.Client.WinPhone
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/README_FIRST.txt:
--------------------------------------------------------------------------------
1 | For the Windows Phone toolkit make sure that you have
2 | marked the icons in the "Toolkit.Content" folder as content. That way they
3 | can be used as the icons for the ApplicationBar control.
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Resources/AppResources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.17626
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace XamarinFormsOIDCSample.Client.WinPhone.Resources
12 | {
13 | using System;
14 |
15 |
16 | ///
17 | /// A strongly-typed resource class, for looking up localized strings, etc.
18 | ///
19 | // This class was auto-generated by the StronglyTypedResourceBuilder
20 | // class via a tool like ResGen or Visual Studio.
21 | // To add or remove a member, edit your .ResX file then rerun ResGen
22 | // with the /str option, or rebuild your VS project.
23 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
24 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
25 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
26 | public class AppResources
27 | {
28 |
29 | private static global::System.Resources.ResourceManager resourceMan;
30 |
31 | private static global::System.Globalization.CultureInfo resourceCulture;
32 |
33 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
34 | internal AppResources()
35 | {
36 | }
37 |
38 | ///
39 | /// Returns the cached ResourceManager instance used by this class.
40 | ///
41 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
42 | public static global::System.Resources.ResourceManager ResourceManager
43 | {
44 | get
45 | {
46 | if (object.ReferenceEquals(resourceMan, null))
47 | {
48 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("XamarinFormsOIDCSample.Client.WinPhone.Resources.AppResources", typeof(AppResources).Assembly);
49 | resourceMan = temp;
50 | }
51 | return resourceMan;
52 | }
53 | }
54 |
55 | ///
56 | /// Overrides the current thread's CurrentUICulture property for all
57 | /// resource lookups using this strongly typed resource class.
58 | ///
59 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
60 | public static global::System.Globalization.CultureInfo Culture
61 | {
62 | get
63 | {
64 | return resourceCulture;
65 | }
66 | set
67 | {
68 | resourceCulture = value;
69 | }
70 | }
71 |
72 | ///
73 | /// Looks up a localized string similar to LeftToRight.
74 | ///
75 | public static string ResourceFlowDirection
76 | {
77 | get
78 | {
79 | return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized string similar to us-EN.
85 | ///
86 | public static string ResourceLanguage
87 | {
88 | get
89 | {
90 | return ResourceManager.GetString("ResourceLanguage", resourceCulture);
91 | }
92 | }
93 |
94 | ///
95 | /// Looks up a localized string similar to MY APPLICATION.
96 | ///
97 | public static string ApplicationTitle
98 | {
99 | get
100 | {
101 | return ResourceManager.GetString("ApplicationTitle", resourceCulture);
102 | }
103 | }
104 |
105 | ///
106 | /// Looks up a localized string similar to button.
107 | ///
108 | public static string AppBarButtonText
109 | {
110 | get
111 | {
112 | return ResourceManager.GetString("AppBarButtonText", resourceCulture);
113 | }
114 | }
115 |
116 | ///
117 | /// Looks up a localized string similar to menu item.
118 | ///
119 | public static string AppBarMenuItemText
120 | {
121 | get
122 | {
123 | return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
124 | }
125 | }
126 | }
127 | }
128 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Resources/AppResources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | LeftToRight
122 | Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language
123 |
124 |
125 | en-US
126 | Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.
127 |
128 |
129 | MY APPLICATION
130 |
131 |
132 | add
133 |
134 |
135 | Menu Item
136 |
137 |
138 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/SplashScreenImage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/SplashScreenImage.jpg
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Toolkit.Content/ApplicationBar.Add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Toolkit.Content/ApplicationBar.Add.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Toolkit.Content/ApplicationBar.Cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Toolkit.Content/ApplicationBar.Cancel.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Toolkit.Content/ApplicationBar.Check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Toolkit.Content/ApplicationBar.Check.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Toolkit.Content/ApplicationBar.Delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Toolkit.Content/ApplicationBar.Delete.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Toolkit.Content/ApplicationBar.Select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/Toolkit.Content/ApplicationBar.Select.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/XamarinFormsOIDCSample.Client.WinPhone.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 10.0.20506
7 | 2.0
8 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}
9 | {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
10 | Library
11 | Properties
12 | XamarinFormsOIDCSample.Client.WinPhone
13 | XamarinFormsOIDCSample.Client.WinPhone
14 | WindowsPhone
15 | v8.0
16 | $(TargetFrameworkVersion)
17 | true
18 |
19 |
20 | true
21 | true
22 | PhoneApp1_$(Configuration)_$(Platform).xap
23 | Properties\AppManifest.xml
24 | XamarinFormsOIDCSample.Client.WinPhone.App
25 | true
26 | 11.0
27 | true
28 |
29 |
30 |
31 |
32 | true
33 | full
34 | false
35 | Bin\Debug
36 | DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
37 | true
38 | true
39 | prompt
40 | 4
41 |
42 |
43 | pdbonly
44 | true
45 | Bin\Release
46 | TRACE;SILVERLIGHT;WINDOWS_PHONE
47 | true
48 | true
49 | prompt
50 | 4
51 |
52 |
53 | true
54 | full
55 | false
56 | Bin\x86\Debug
57 | DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
58 | true
59 | true
60 | prompt
61 | 4
62 |
63 |
64 | pdbonly
65 | true
66 | Bin\x86\Release
67 | TRACE;SILVERLIGHT;WINDOWS_PHONE
68 | true
69 | true
70 | prompt
71 | 4
72 |
73 |
74 | true
75 | full
76 | false
77 | Bin\ARM\Debug
78 | DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
79 | true
80 | true
81 | prompt
82 | 4
83 |
84 |
85 | pdbonly
86 | true
87 | Bin\ARM\Release
88 | TRACE;SILVERLIGHT;WINDOWS_PHONE
89 | true
90 | true
91 | prompt
92 | 4
93 |
94 |
95 |
96 | App.xaml
97 |
98 |
99 |
100 | MainPage.xaml
101 |
102 |
103 |
104 | True
105 | True
106 | AppResources.resx
107 |
108 |
109 |
110 |
111 | Designer
112 | MSBuild:Compile
113 |
114 |
115 | Designer
116 | MSBuild:Compile
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 | Designer
125 |
126 |
127 |
128 |
129 |
130 | PreserveNewest
131 |
132 |
133 |
134 | PreserveNewest
135 |
136 |
137 | PreserveNewest
138 |
139 |
140 | PreserveNewest
141 |
142 |
143 | PreserveNewest
144 |
145 |
146 | PreserveNewest
147 |
148 |
149 | PreserveNewest
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 | PublicResXFileCodeGenerator
160 | AppResources.Designer.cs
161 |
162 |
163 |
164 |
165 | XamarinFormsOIDCSample.Client
166 |
167 |
168 |
169 |
170 | ..\..\packages\WPtoolkit.4.2013.08.16\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll
171 | True
172 |
173 |
174 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\WP80\Xamarin.Forms.Core.dll
175 | True
176 |
177 |
178 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\WP80\Xamarin.Forms.Platform.dll
179 | True
180 |
181 |
182 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\WP80\Xamarin.Forms.Platform.WP8.dll
183 | True
184 |
185 |
186 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\WP80\Xamarin.Forms.Xaml.dll
187 | True
188 |
189 |
190 |
191 |
192 |
199 |
200 |
201 |
202 |
203 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
204 |
205 |
206 |
207 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.WinPhone/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace XamarinFormsOIDCSample.Client.iOS
9 | {
10 | // The UIApplicationDelegate for the application. This class is responsible for launching the
11 | // User Interface of the application, as well as listening (and optionally responding) to
12 | // application events from iOS.
13 | [Register("AppDelegate")]
14 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
15 | {
16 | //
17 | // This method is invoked when the application has loaded and is ready to run. In this
18 | // method you should instantiate the window, load the UI into it and then make the window
19 | // visible.
20 | //
21 | // You have 17 seconds to return from this method, or iOS will terminate your application.
22 | //
23 | public override bool FinishedLaunching(UIApplication app, NSDictionary options)
24 | {
25 | global::Xamarin.Forms.Forms.Init();
26 | LoadApplication(new App());
27 |
28 | return base.FinishedLaunching(app, options);
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIDeviceFamily
6 |
7 | 1
8 | 2
9 |
10 | UISupportedInterfaceOrientations
11 |
12 | UIInterfaceOrientationPortrait
13 | UIInterfaceOrientationLandscapeLeft
14 | UIInterfaceOrientationLandscapeRight
15 |
16 | UISupportedInterfaceOrientations~ipad
17 |
18 | UIInterfaceOrientationPortrait
19 | UIInterfaceOrientationPortraitUpsideDown
20 | UIInterfaceOrientationLandscapeLeft
21 | UIInterfaceOrientationLandscapeRight
22 |
23 | MinimumOSVersion
24 | 6.0
25 | CFBundleDisplayName
26 | XamarinFormsOIDCSample.Client
27 | CFBundleIdentifier
28 | com.yourcompany.XamarinFormsOIDCSample.Client
29 | CFBundleVersion
30 | 1.0
31 | CFBundleIconFiles
32 |
33 | Icon-60@2x
34 | Icon-60@3x
35 | Icon-76
36 | Icon-76@2x
37 | Default
38 | Default@2x
39 | Default-568h@2x
40 | Default-Portrait
41 | Default-Portrait@2x
42 | Icon-Small-40
43 | Icon-Small-40@2x
44 | Icon-Small-40@3x
45 | Icon-Small
46 | Icon-Small@2x
47 | Icon-Small@3x
48 |
49 | UILaunchStoryboardName
50 | LaunchScreen
51 |
52 |
53 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace XamarinFormsOIDCSample.Client.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, "AppDelegate");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("XamarinFormsOIDCSample.Client.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("XamarinFormsOIDCSample.Client.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2014")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-60@2x.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-60@3x.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-76.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-76@2x.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small-40.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small-40@2x.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small-40@3x.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small@2x.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/Icon-Small@3x.png
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/Resources/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/XamarinFormsOIDCSample.Client.iOS.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | iPhoneSimulator
6 | 8.0.30703
7 | 2.0
8 | {82423A41-1A4B-4D95-A77A-6C236752170E}
9 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10 | Exe
11 | XamarinFormsOIDCSample.Client.iOS
12 | Resources
13 | XamarinFormsOIDCSampleClientiOS
14 |
15 |
16 |
17 |
18 | true
19 | full
20 | false
21 | bin\iPhoneSimulator\Debug
22 | DEBUG
23 | prompt
24 | 4
25 | false
26 | i386, x86_64
27 | None
28 | true
29 |
30 |
31 | none
32 | true
33 | bin\iPhoneSimulator\Release
34 | prompt
35 | 4
36 | None
37 | i386, x86_64
38 | false
39 |
40 |
41 | true
42 | full
43 | false
44 | bin\iPhone\Debug
45 | DEBUG
46 | prompt
47 | 4
48 | false
49 | ARMv7, ARM64
50 | iPhone Developer
51 | true
52 | Entitlements.plist
53 |
54 |
55 | none
56 | true
57 | bin\iPhone\Release
58 | prompt
59 | 4
60 | ARMv7, ARM64
61 | false
62 | iPhone Developer
63 | Entitlements.plist
64 |
65 |
66 | none
67 | True
68 | bin\iPhone\Ad-Hoc
69 | prompt
70 | 4
71 | False
72 | ARMv7, ARM64
73 | True
74 | Automatic:AdHoc
75 | iPhone Distribution
76 | Entitlements.plist
77 |
78 |
79 | none
80 | True
81 | bin\iPhone\AppStore
82 | prompt
83 | 4
84 | False
85 | ARMv7, ARM64
86 | Automatic:AppStore
87 | iPhone Distribution
88 | Entitlements.plist
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 | XamarinFormsOIDCSample.Client
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll
130 | True
131 |
132 |
133 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll
134 | True
135 |
136 |
137 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll
138 | True
139 |
140 |
141 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll
142 | True
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
151 |
152 |
153 |
154 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/iTunesArtwork:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/iTunesArtwork
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/iTunesArtwork@2x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/iTunesArtwork@2x
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.iOS/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client/App.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using Xamarin.Forms;
7 | using XamarinFormsOIDCSample.Client.Views;
8 |
9 | namespace XamarinFormsOIDCSample.Client
10 | {
11 | public class App : Application
12 | {
13 | public App()
14 | {
15 | // The root page of your application
16 | MainPage = new LoginView();
17 | }
18 |
19 | protected override void OnStart()
20 | {
21 | // Handle when your app starts
22 | }
23 |
24 | protected override void OnSleep()
25 | {
26 | // Handle when your app sleeps
27 | }
28 |
29 | protected override void OnResume()
30 | {
31 | // Handle when your app resumes
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client/GettingStarted.Xamarin:
--------------------------------------------------------------------------------
1 |
2 | GS\XF\CS\App\GettingStarted.html
3 | false
4 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Resources;
2 | using System.Reflection;
3 | using System.Runtime.CompilerServices;
4 | using System.Runtime.InteropServices;
5 |
6 | // General Information about an assembly is controlled through the following
7 | // set of attributes. Change these attribute values to modify the information
8 | // associated with an assembly.
9 | [assembly: AssemblyTitle("XamarinFormsOIDCSample.Client")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("XamarinFormsOIDCSample.Client")]
14 | [assembly: AssemblyCopyright("Copyright © 2014")]
15 | [assembly: AssemblyTrademark("")]
16 | [assembly: AssemblyCulture("")]
17 | [assembly: NeutralResourcesLanguage("en")]
18 |
19 | // Version information for an assembly consists of the following four values:
20 | //
21 | // Major Version
22 | // Minor Version
23 | // Build Number
24 | // Revision
25 | //
26 | // You can specify all the values or you can default the Build and Revision Numbers
27 | // by using the '*' as shown below:
28 | // [assembly: AssemblyVersion("1.0.*")]
29 | [assembly: AssemblyVersion("1.0.0.0")]
30 | [assembly: AssemblyFileVersion("1.0.0.0")]
31 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client/Views/LoginView.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client/Views/LoginView.xaml.cs:
--------------------------------------------------------------------------------
1 | using IdentityModel.Client;
2 | using Newtonsoft.Json;
3 | using Newtonsoft.Json.Linq;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Linq;
7 | using System.Net.Http;
8 | using System.Net.Http.Headers;
9 | using System.Text;
10 | using System.Threading.Tasks;
11 |
12 | using Xamarin.Forms;
13 |
14 | namespace XamarinFormsOIDCSample.Client.Views
15 | {
16 | public partial class LoginView : ContentPage
17 | {
18 | private AuthorizeResponse _authResponse;
19 | private string _currentCSRFToken;
20 |
21 | public LoginView()
22 | {
23 | InitializeComponent();
24 | btnGetIdToken.Clicked += GetIdToken;
25 | btnGetAccessToken.Clicked += GetAccessToken;
26 | btnGetIdTokenAndAccessToken.Clicked += GetIdTokenAndAccessToken;
27 | btnCallAPI.Clicked += CallAPI;
28 | wvLogin.Navigating += WvLogin_Navigating;
29 | }
30 |
31 | private void WvLogin_Navigating(object sender, WebNavigatingEventArgs e)
32 | {
33 | if (e.Url.Contains("https://xamarin-oidc-sample/redirect"))
34 | {
35 | wvLogin.IsVisible = false;
36 |
37 | // parse response
38 | _authResponse = new AuthorizeResponse(e.Url);
39 |
40 | // CSRF check
41 | var state = _authResponse.Values["state"];
42 | if (state != _currentCSRFToken)
43 | {
44 | txtResult.Text = "CSRF token doesn't match";
45 | return;
46 | }
47 |
48 | string decodedTokens = "";
49 | // decode tokens
50 | if (!string.IsNullOrWhiteSpace(_authResponse.IdentityToken))
51 | {
52 | decodedTokens += "Identity token \r\n";
53 | decodedTokens += DecodeToken(_authResponse.IdentityToken) + "\r\n";
54 | }
55 |
56 | if (!string.IsNullOrWhiteSpace(_authResponse.AccessToken))
57 | {
58 | decodedTokens += "Access token \r\n";
59 | decodedTokens += DecodeToken(_authResponse.AccessToken);
60 | }
61 |
62 | txtResult.Text = decodedTokens;
63 | }
64 | }
65 |
66 | private async void CallAPI(object sender, EventArgs e)
67 | {
68 | if (_authResponse == null || string.IsNullOrWhiteSpace(_authResponse.AccessToken))
69 | {
70 | txtResult.Text = "No access token.";
71 | return;
72 | }
73 |
74 | var client = new HttpClient();
75 | client.SetBearerToken(_authResponse.AccessToken);
76 | client.DefaultRequestHeaders.Accept.Clear();
77 | client.DefaultRequestHeaders.Accept.Add(
78 | new MediaTypeWithQualityHeaderValue("application/json"));
79 |
80 | var response = await client.GetAsync("https://xamarinoidcsampleapi.azurewebsites.net/api/cows");
81 | if (response.IsSuccessStatusCode)
82 | {
83 | var content = await response.Content.ReadAsStringAsync();
84 | txtResult.Text = content;
85 | }
86 | }
87 |
88 | private void GetIdToken(object sender, EventArgs e)
89 | {
90 | // id_tokens don't contain resource scopes, only ask for
91 | // openid and profile
92 | StartFlow("id_token", "openid profile");
93 | }
94 |
95 | private void GetAccessToken(object sender, EventArgs e)
96 | {
97 | // access tokens are for resource authorization, only ask for
98 | // the cowsapi resource scope
99 | StartFlow("token", "cowsapi");
100 | }
101 |
102 | private void GetIdTokenAndAccessToken(object sender, EventArgs e)
103 | {
104 | // when asking both, we can ask for identity-related scopes
105 | // as well as resource scopes
106 | StartFlow("id_token token", "openid profile cowsapi");
107 | }
108 |
109 | public void StartFlow(string responseType, string scope)
110 | {
111 | // create URI to auth endpoint
112 | var authorizeRequest =
113 | new AuthorizeRequest("https://xamarinoidcsamplests.azurewebsites.net/identity/connect/authorize");
114 |
115 | // note: change URI to wherever you deployed your STS (CTRL-SHIFT-F is your friend :)).
116 | // For use with IIS Express, check https://www.github.com/KevinDockx/XamarinFormsOIDCSample.
117 |
118 | // dictionary with values for the authorize request
119 | var dic = new Dictionary();
120 | dic.Add("client_id", "xamarinsampleimplicit");
121 | dic.Add("response_type", responseType);
122 | dic.Add("scope", scope);
123 | dic.Add("redirect_uri", "https://xamarin-oidc-sample/redirect");
124 | dic.Add("nonce", Guid.NewGuid().ToString("N"));
125 |
126 | // add CSRF token to protect against cross-site request forgery attacks.
127 | _currentCSRFToken = Guid.NewGuid().ToString("N");
128 | dic.Add("state", _currentCSRFToken);
129 |
130 | var authorizeUri = authorizeRequest.Create(dic);
131 |
132 | // or use CreateAuthorizeUrl, passing in the values we defined in the dictionary.
133 | // authorizeRequest.CreateAuthorizeUrl("xamarinsampleimplicit", ...);
134 |
135 | wvLogin.Source = authorizeUri;
136 | wvLogin.IsVisible = true;
137 | }
138 |
139 | public static string DecodeToken(string token)
140 | {
141 | var parts = token.Split('.');
142 |
143 | string partToConvert = parts[1];
144 | partToConvert = partToConvert.Replace('-', '+');
145 | partToConvert = partToConvert.Replace('_', '/');
146 | switch (partToConvert.Length % 4)
147 | {
148 | case 0:
149 | break;
150 | case 2:
151 | partToConvert += "==";
152 | break;
153 | case 3:
154 | partToConvert += "=";
155 | break;
156 | }
157 |
158 | var partAsBytes = Convert.FromBase64String(partToConvert);
159 | var partAsUTF8String = Encoding.UTF8.GetString(partAsBytes, 0, partAsBytes.Count());
160 |
161 | return JObject.Parse(partAsUTF8String).ToString();
162 | }
163 | }
164 | }
165 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 10.0
6 | Debug
7 | AnyCPU
8 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}
9 | Library
10 | Properties
11 | XamarinFormsOIDCSample.Client
12 | XamarinFormsOIDCSample.Client
13 | v4.5
14 | Profile78
15 | 512
16 | {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
17 |
18 |
19 |
20 |
21 | true
22 | full
23 | false
24 | bin\Debug\
25 | DEBUG;TRACE
26 | prompt
27 | 4
28 |
29 |
30 | pdbonly
31 | true
32 | bin\Release\
33 | TRACE
34 | prompt
35 | 4
36 |
37 |
38 |
39 |
40 |
41 | LoginView.xaml
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | ..\..\packages\IdentityModel.1.3.1\lib\portable-net45+wp80+win8+wpa81\IdentityModel.Portable.dll
52 | True
53 |
54 |
55 | ..\..\packages\Newtonsoft.Json.8.0.2\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll
56 | True
57 |
58 |
59 | ..\..\packages\Microsoft.Net.Http.2.2.28\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.dll
60 | True
61 |
62 |
63 | ..\..\packages\Microsoft.Net.Http.2.2.28\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll
64 | True
65 |
66 |
67 | ..\..\packages\Microsoft.Net.Http.2.2.28\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll
68 | True
69 |
70 |
71 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Core.dll
72 | True
73 |
74 |
75 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Platform.dll
76 | True
77 |
78 |
79 | ..\..\packages\Xamarin.Forms.2.0.1.6495\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Xaml.dll
80 | True
81 |
82 |
83 |
84 |
85 | MSBuild:UpdateDesignTimeXaml
86 | Designer
87 |
88 |
89 |
90 |
91 |
92 |
93 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
94 |
95 |
96 |
97 |
98 |
99 |
106 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.Client/XamarinFormsOIDCSample.Client/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/Certificates/DevRoot.cer:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.IdentityServer/Certificates/DevRoot.cer
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/Certificates/idsrv3test.cer:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KevinDockx/XamarinFormsOIDCSample/e88c074a6ba2b84014c8b5ce8d04d0b82d7c87ab/XamarinFormsOIDCSample.IdentityServer/Certificates/idsrv3test.cer
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/Config/Clients.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using IdentityServer3.Core.Models;
7 |
8 | namespace XamarinFormsOIDCSample.IdentityServer.Config
9 | {
10 | public static class Clients
11 | {
12 | public static IEnumerable Get()
13 | {
14 | return new[]
15 | {
16 | new Client
17 | {
18 | ClientId = "xamarinsampleimplicit",
19 | ClientName = "Xamarin Sample (Implicit)",
20 | Flow = Flows.Implicit,
21 | AllowAccessToAllScopes = true,
22 | RequireConsent = true,
23 |
24 | // redirect = URI of the Xamarin Application
25 | RedirectUris = new List
26 | {
27 | "https://xamarin-oidc-sample/redirect"
28 | }
29 | }
30 | };
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/Config/Scopes.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using IdentityServer3.Core.Models;
7 |
8 | namespace XamarinFormsOIDCSample.IdentityServer.Config
9 | {
10 | public static class Scopes
11 | {
12 | public static IEnumerable Get()
13 | {
14 | return new List
15 | {
16 | StandardScopes.OpenId,
17 | StandardScopes.ProfileAlwaysInclude,
18 | new Scope
19 | {
20 | Name = "cowsapi",
21 | DisplayName = "Cows API Access",
22 | Description = "Allow the application to access the Cows API on your behalf.",
23 | Type = ScopeType.Resource,
24 |
25 | }
26 | };
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/Config/Users.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Security.Claims;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using IdentityServer3.Core;
8 | using IdentityServer3.Core.Services.InMemory;
9 |
10 | namespace XamarinFormsOIDCSample.IdentityServer.Config
11 | {
12 | public static class Users
13 | {
14 | public static List Get()
15 | {
16 | return new List() {
17 | new InMemoryUser
18 | {
19 | Username = "Kevin",
20 | Password = "secret",
21 | Subject = "123",
22 | Claims = new[]
23 | {
24 | new Claim(Constants.ClaimTypes.GivenName, "Kevin"),
25 | new Claim(Constants.ClaimTypes.FamilyName, "Dockx")
26 | }
27 | }
28 | };
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("XamarinFormsOIDCSample.IdentityServer")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("XamarinFormsOIDCSample.IdentityServer")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("5b72d271-ac9c-48a3-ad5f-dba6214be8cd")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Revision and Build Numbers
33 | // by using the '*' as shown below:
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/Properties/PublishProfiles/xamarinoidcsamplests - Web Deploy.pubxml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 | MSDeploy
9 | AzureWebSite
10 | Release
11 | Any CPU
12 | http://xamarinoidcsamplests.azurewebsites.net
13 | True
14 | False
15 | xamarinoidcsamplests.scm.azurewebsites.net:443
16 | xamarinoidcsamplests
17 |
18 | True
19 | WMSVC
20 | True
21 | $xamarinoidcsamplests
22 | <_SavePWD>True
23 | <_DestinationType>AzureWebSite
24 |
25 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/Startup.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Security.Cryptography.X509Certificates;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using IdentityServer3.Core.Configuration;
8 | using Owin;
9 | using XamarinFormsOIDCSample.IdentityServer.Config;
10 |
11 | namespace XamarinFormsOIDCSample.IdentityServer
12 | {
13 | public class Startup
14 | {
15 | public void Configuration(IAppBuilder app)
16 | {
17 |
18 | app.Map("/identity", idsrvApp =>
19 | {
20 | var idServerServiceFactory = new IdentityServerServiceFactory()
21 | .UseInMemoryClients(Clients.Get())
22 | .UseInMemoryUsers(Users.Get())
23 | .UseInMemoryScopes(Scopes.Get());
24 |
25 | var options = new IdentityServerOptions
26 | {
27 | Factory = idServerServiceFactory,
28 | SiteName = "Xamarin Sample STS",
29 | IssuerUri = "https://xamarinsamplests/identity",
30 | PublicOrigin = "https://xamarinoidcsamplests.azurewebsites.net/",
31 | SigningCertificate = LoadCertificate(),
32 | RequireSsl = true
33 | };
34 |
35 | idsrvApp.UseIdentityServer(options);
36 | });
37 | }
38 |
39 | X509Certificate2 LoadCertificate()
40 | {
41 | return new X509Certificate2(
42 | string.Format(@"{0}\Certificates\idsrv3test.pfx",
43 | AppDomain.CurrentDomain.BaseDirectory), "idsrv3test");
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/Web.Debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
29 |
30 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/Web.Release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
19 |
30 |
31 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/Web.config:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/XamarinFormsOIDCSample.IdentityServer.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Debug
8 | AnyCPU
9 |
10 |
11 | 2.0
12 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}
13 | {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
14 | Library
15 | Properties
16 | XamarinFormsOIDCSample.IdentityServer
17 | XamarinFormsOIDCSample.IdentityServer
18 | v4.5.2
19 | true
20 | 44301
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | true
30 | full
31 | false
32 | bin\
33 | DEBUG;TRACE
34 | prompt
35 | 4
36 |
37 |
38 | pdbonly
39 | true
40 | bin\
41 | TRACE
42 | prompt
43 | 4
44 |
45 |
46 |
47 | ..\packages\IdentityModel.1.2.1\lib\net45\IdentityModel.Net45.dll
48 | True
49 |
50 |
51 | ..\packages\IdentityServer3.2.3.0\lib\net45\IdentityServer3.dll
52 | True
53 |
54 |
55 | ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
56 | True
57 |
58 |
59 |
60 | ..\packages\Microsoft.IdentityModel.Protocol.Extensions.1.0.2.206221351\lib\net45\Microsoft.IdentityModel.Protocol.Extensions.dll
61 | True
62 |
63 |
64 | ..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll
65 | True
66 |
67 |
68 | ..\packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
69 | True
70 |
71 |
72 | ..\packages\Microsoft.Owin.Security.3.0.1\lib\net45\Microsoft.Owin.Security.dll
73 | True
74 |
75 |
76 | ..\packages\Microsoft.Owin.Security.Jwt.3.0.1\lib\net45\Microsoft.Owin.Security.Jwt.dll
77 | True
78 |
79 |
80 | ..\packages\Microsoft.Owin.Security.OAuth.3.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll
81 | True
82 |
83 |
84 | ..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll
85 | True
86 |
87 |
88 | ..\packages\Owin.1.0\lib\net40\Owin.dll
89 | True
90 |
91 |
92 |
93 | ..\packages\System.IdentityModel.Tokens.Jwt.4.0.2.206221351\lib\net45\System.IdentityModel.Tokens.Jwt.dll
94 | True
95 |
96 |
97 |
98 | ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll
99 | True
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 | Web.config
127 |
128 |
129 | Web.config
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 | 10.0
144 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 | True
154 | True
155 | 10058
156 | /
157 | https://localhost:44301/
158 | False
159 | False
160 |
161 |
162 | False
163 |
164 |
165 |
166 |
167 |
168 |
169 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
170 |
171 |
172 |
173 |
174 |
181 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.IdentityServer/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/XamarinFormsOIDCSample.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.24720.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinFormsOIDCSample.Client.Droid", "XamarinFormsOIDCSample.Client\XamarinFormsOIDCSample.Client.Droid\XamarinFormsOIDCSample.Client.Droid.csproj", "{93BF7932-6C92-4A79-AED0-439CD1E73FD9}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinFormsOIDCSample.Client.iOS", "XamarinFormsOIDCSample.Client\XamarinFormsOIDCSample.Client.iOS\XamarinFormsOIDCSample.Client.iOS.csproj", "{82423A41-1A4B-4D95-A77A-6C236752170E}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinFormsOIDCSample.Client.WinPhone", "XamarinFormsOIDCSample.Client\XamarinFormsOIDCSample.Client.WinPhone\XamarinFormsOIDCSample.Client.WinPhone.csproj", "{BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}"
11 | EndProject
12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinFormsOIDCSample.Client", "XamarinFormsOIDCSample.Client\XamarinFormsOIDCSample.Client\XamarinFormsOIDCSample.Client.csproj", "{FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}"
13 | EndProject
14 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Client", "Client", "{E638CA4D-1BFF-4EF4-A2B3-D5D9E57F5C37}"
15 | EndProject
16 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Server", "Server", "{D617BE4F-88B1-454A-9E30-FF7476659206}"
17 | EndProject
18 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinFormsOIDCSample.API", "XamarinFormsOIDCSample.API\XamarinFormsOIDCSample.API.csproj", "{7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}"
19 | EndProject
20 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamarinFormsOIDCSample.IdentityServer", "XamarinFormsOIDCSample.IdentityServer\XamarinFormsOIDCSample.IdentityServer.csproj", "{5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}"
21 | EndProject
22 | Global
23 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
24 | Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
25 | Ad-Hoc|ARM = Ad-Hoc|ARM
26 | Ad-Hoc|iPhone = Ad-Hoc|iPhone
27 | Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
28 | Ad-Hoc|x86 = Ad-Hoc|x86
29 | AppStore|Any CPU = AppStore|Any CPU
30 | AppStore|ARM = AppStore|ARM
31 | AppStore|iPhone = AppStore|iPhone
32 | AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
33 | AppStore|x86 = AppStore|x86
34 | Debug|Any CPU = Debug|Any CPU
35 | Debug|ARM = Debug|ARM
36 | Debug|iPhone = Debug|iPhone
37 | Debug|iPhoneSimulator = Debug|iPhoneSimulator
38 | Debug|x86 = Debug|x86
39 | Release|Any CPU = Release|Any CPU
40 | Release|ARM = Release|ARM
41 | Release|iPhone = Release|iPhone
42 | Release|iPhoneSimulator = Release|iPhoneSimulator
43 | Release|x86 = Release|x86
44 | EndGlobalSection
45 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
46 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
47 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
48 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
49 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
50 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
51 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU
52 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
53 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
54 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
55 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
56 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
57 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
58 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
59 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|x86.Build.0 = Release|Any CPU
60 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU
61 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
62 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|Any CPU.Build.0 = Release|Any CPU
63 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
64 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|ARM.ActiveCfg = Release|Any CPU
65 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|ARM.Build.0 = Release|Any CPU
66 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|ARM.Deploy.0 = Release|Any CPU
67 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|iPhone.ActiveCfg = Release|Any CPU
68 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|iPhone.Build.0 = Release|Any CPU
69 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|iPhone.Deploy.0 = Release|Any CPU
70 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
71 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
72 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
73 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|x86.ActiveCfg = Release|Any CPU
74 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|x86.Build.0 = Release|Any CPU
75 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.AppStore|x86.Deploy.0 = Release|Any CPU
76 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
77 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|Any CPU.Build.0 = Debug|Any CPU
78 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
79 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|ARM.ActiveCfg = Debug|Any CPU
80 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|ARM.Build.0 = Debug|Any CPU
81 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|ARM.Deploy.0 = Debug|Any CPU
82 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|iPhone.ActiveCfg = Debug|Any CPU
83 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|iPhone.Build.0 = Debug|Any CPU
84 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|iPhone.Deploy.0 = Debug|Any CPU
85 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
86 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
87 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
88 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|x86.ActiveCfg = Debug|Any CPU
89 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|x86.Build.0 = Debug|Any CPU
90 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Debug|x86.Deploy.0 = Debug|Any CPU
91 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|Any CPU.ActiveCfg = Release|Any CPU
92 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|Any CPU.Build.0 = Release|Any CPU
93 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|Any CPU.Deploy.0 = Release|Any CPU
94 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|ARM.ActiveCfg = Release|Any CPU
95 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|ARM.Build.0 = Release|Any CPU
96 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|ARM.Deploy.0 = Release|Any CPU
97 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|iPhone.ActiveCfg = Release|Any CPU
98 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|iPhone.Build.0 = Release|Any CPU
99 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|iPhone.Deploy.0 = Release|Any CPU
100 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
101 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
102 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
103 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|x86.ActiveCfg = Release|Any CPU
104 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|x86.Build.0 = Release|Any CPU
105 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9}.Release|x86.Deploy.0 = Release|Any CPU
106 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
107 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone
108 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
109 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
110 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
111 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
112 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone
113 | {82423A41-1A4B-4D95-A77A-6C236752170E}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
114 | {82423A41-1A4B-4D95-A77A-6C236752170E}.AppStore|ARM.ActiveCfg = AppStore|iPhone
115 | {82423A41-1A4B-4D95-A77A-6C236752170E}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
116 | {82423A41-1A4B-4D95-A77A-6C236752170E}.AppStore|iPhone.Build.0 = AppStore|iPhone
117 | {82423A41-1A4B-4D95-A77A-6C236752170E}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
118 | {82423A41-1A4B-4D95-A77A-6C236752170E}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
119 | {82423A41-1A4B-4D95-A77A-6C236752170E}.AppStore|x86.ActiveCfg = AppStore|iPhone
120 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Debug|Any CPU.ActiveCfg = Debug|iPhone
121 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Debug|ARM.ActiveCfg = Debug|iPhone
122 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Debug|iPhone.ActiveCfg = Debug|iPhone
123 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Debug|iPhone.Build.0 = Debug|iPhone
124 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
125 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
126 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Debug|x86.ActiveCfg = Debug|iPhone
127 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Release|Any CPU.ActiveCfg = Release|iPhone
128 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Release|ARM.ActiveCfg = Release|iPhone
129 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Release|iPhone.ActiveCfg = Release|iPhone
130 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Release|iPhone.Build.0 = Release|iPhone
131 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
132 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
133 | {82423A41-1A4B-4D95-A77A-6C236752170E}.Release|x86.ActiveCfg = Release|iPhone
134 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
135 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
136 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
137 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
138 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|ARM.Build.0 = Release|ARM
139 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|ARM.Deploy.0 = Release|ARM
140 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
141 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
142 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
143 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
144 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
145 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
146 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|x86.ActiveCfg = Release|x86
147 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|x86.Build.0 = Release|x86
148 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Ad-Hoc|x86.Deploy.0 = Release|x86
149 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
150 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|Any CPU.Build.0 = Release|Any CPU
151 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
152 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|ARM.ActiveCfg = Release|ARM
153 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|ARM.Build.0 = Release|ARM
154 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|ARM.Deploy.0 = Release|ARM
155 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|iPhone.ActiveCfg = Release|Any CPU
156 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|iPhone.Build.0 = Release|Any CPU
157 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|iPhone.Deploy.0 = Release|Any CPU
158 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
159 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
160 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
161 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|x86.ActiveCfg = Release|x86
162 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|x86.Build.0 = Release|x86
163 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.AppStore|x86.Deploy.0 = Release|x86
164 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
165 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|Any CPU.Build.0 = Debug|Any CPU
166 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
167 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|ARM.ActiveCfg = Debug|ARM
168 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|ARM.Build.0 = Debug|ARM
169 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|ARM.Deploy.0 = Debug|ARM
170 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|iPhone.ActiveCfg = Debug|Any CPU
171 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|iPhone.Build.0 = Debug|Any CPU
172 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|iPhone.Deploy.0 = Debug|Any CPU
173 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
174 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
175 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
176 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|x86.ActiveCfg = Debug|x86
177 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|x86.Build.0 = Debug|x86
178 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Debug|x86.Deploy.0 = Debug|x86
179 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|Any CPU.ActiveCfg = Release|Any CPU
180 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|Any CPU.Build.0 = Release|Any CPU
181 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|Any CPU.Deploy.0 = Release|Any CPU
182 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|ARM.ActiveCfg = Release|ARM
183 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|ARM.Build.0 = Release|ARM
184 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|ARM.Deploy.0 = Release|ARM
185 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|iPhone.ActiveCfg = Release|Any CPU
186 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|iPhone.Build.0 = Release|Any CPU
187 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|iPhone.Deploy.0 = Release|Any CPU
188 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
189 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
190 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
191 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|x86.ActiveCfg = Release|x86
192 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|x86.Build.0 = Release|x86
193 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932}.Release|x86.Deploy.0 = Release|x86
194 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
195 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
196 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
197 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
198 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
199 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
200 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
201 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
202 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
203 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Ad-Hoc|x86.Build.0 = Release|Any CPU
204 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
205 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.AppStore|Any CPU.Build.0 = Release|Any CPU
206 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.AppStore|ARM.ActiveCfg = Release|Any CPU
207 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.AppStore|ARM.Build.0 = Release|Any CPU
208 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.AppStore|iPhone.ActiveCfg = Release|Any CPU
209 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.AppStore|iPhone.Build.0 = Release|Any CPU
210 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
211 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
212 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.AppStore|x86.ActiveCfg = Release|Any CPU
213 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.AppStore|x86.Build.0 = Release|Any CPU
214 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
215 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
216 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Debug|ARM.ActiveCfg = Debug|Any CPU
217 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Debug|ARM.Build.0 = Debug|Any CPU
218 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Debug|iPhone.ActiveCfg = Debug|Any CPU
219 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Debug|iPhone.Build.0 = Debug|Any CPU
220 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
221 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
222 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Debug|x86.ActiveCfg = Debug|Any CPU
223 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Debug|x86.Build.0 = Debug|Any CPU
224 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
225 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Release|Any CPU.Build.0 = Release|Any CPU
226 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Release|ARM.ActiveCfg = Release|Any CPU
227 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Release|ARM.Build.0 = Release|Any CPU
228 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Release|iPhone.ActiveCfg = Release|Any CPU
229 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Release|iPhone.Build.0 = Release|Any CPU
230 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
231 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
232 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Release|x86.ActiveCfg = Release|Any CPU
233 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB}.Release|x86.Build.0 = Release|Any CPU
234 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
235 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
236 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
237 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
238 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
239 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
240 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
241 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
242 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
243 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Ad-Hoc|x86.Build.0 = Release|Any CPU
244 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
245 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.AppStore|Any CPU.Build.0 = Release|Any CPU
246 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.AppStore|ARM.ActiveCfg = Release|Any CPU
247 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.AppStore|ARM.Build.0 = Release|Any CPU
248 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.AppStore|iPhone.ActiveCfg = Release|Any CPU
249 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.AppStore|iPhone.Build.0 = Release|Any CPU
250 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
251 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
252 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.AppStore|x86.ActiveCfg = Release|Any CPU
253 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.AppStore|x86.Build.0 = Release|Any CPU
254 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
255 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Debug|Any CPU.Build.0 = Debug|Any CPU
256 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Debug|ARM.ActiveCfg = Debug|Any CPU
257 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Debug|ARM.Build.0 = Debug|Any CPU
258 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Debug|iPhone.ActiveCfg = Debug|Any CPU
259 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Debug|iPhone.Build.0 = Debug|Any CPU
260 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
261 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
262 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Debug|x86.ActiveCfg = Debug|Any CPU
263 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Debug|x86.Build.0 = Debug|Any CPU
264 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Release|Any CPU.ActiveCfg = Release|Any CPU
265 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Release|Any CPU.Build.0 = Release|Any CPU
266 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Release|ARM.ActiveCfg = Release|Any CPU
267 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Release|ARM.Build.0 = Release|Any CPU
268 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Release|iPhone.ActiveCfg = Release|Any CPU
269 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Release|iPhone.Build.0 = Release|Any CPU
270 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
271 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
272 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Release|x86.ActiveCfg = Release|Any CPU
273 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998}.Release|x86.Build.0 = Release|Any CPU
274 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
275 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
276 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
277 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
278 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
279 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
280 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
281 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
282 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
283 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Ad-Hoc|x86.Build.0 = Release|Any CPU
284 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
285 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.AppStore|Any CPU.Build.0 = Release|Any CPU
286 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.AppStore|ARM.ActiveCfg = Release|Any CPU
287 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.AppStore|ARM.Build.0 = Release|Any CPU
288 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.AppStore|iPhone.ActiveCfg = Release|Any CPU
289 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.AppStore|iPhone.Build.0 = Release|Any CPU
290 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
291 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
292 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.AppStore|x86.ActiveCfg = Release|Any CPU
293 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.AppStore|x86.Build.0 = Release|Any CPU
294 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
295 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
296 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Debug|ARM.ActiveCfg = Debug|Any CPU
297 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Debug|ARM.Build.0 = Debug|Any CPU
298 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Debug|iPhone.ActiveCfg = Debug|Any CPU
299 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Debug|iPhone.Build.0 = Debug|Any CPU
300 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
301 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
302 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Debug|x86.ActiveCfg = Debug|Any CPU
303 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Debug|x86.Build.0 = Debug|Any CPU
304 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
305 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Release|Any CPU.Build.0 = Release|Any CPU
306 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Release|ARM.ActiveCfg = Release|Any CPU
307 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Release|ARM.Build.0 = Release|Any CPU
308 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Release|iPhone.ActiveCfg = Release|Any CPU
309 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Release|iPhone.Build.0 = Release|Any CPU
310 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
311 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
312 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Release|x86.ActiveCfg = Release|Any CPU
313 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD}.Release|x86.Build.0 = Release|Any CPU
314 | EndGlobalSection
315 | GlobalSection(SolutionProperties) = preSolution
316 | HideSolutionNode = FALSE
317 | EndGlobalSection
318 | GlobalSection(NestedProjects) = preSolution
319 | {93BF7932-6C92-4A79-AED0-439CD1E73FD9} = {E638CA4D-1BFF-4EF4-A2B3-D5D9E57F5C37}
320 | {82423A41-1A4B-4D95-A77A-6C236752170E} = {E638CA4D-1BFF-4EF4-A2B3-D5D9E57F5C37}
321 | {BEE76A7B-A2CE-4954-A2EC-8D9B428DC932} = {E638CA4D-1BFF-4EF4-A2B3-D5D9E57F5C37}
322 | {FD2BA6DB-C83C-43BB-BB66-F8050B5C8CBB} = {E638CA4D-1BFF-4EF4-A2B3-D5D9E57F5C37}
323 | {7D6FF2A9-42C1-4F89-9B4E-CEA02B01E998} = {D617BE4F-88B1-454A-9E30-FF7476659206}
324 | {5B72D271-AC9C-48A3-AD5F-DBA6214BE8CD} = {D617BE4F-88B1-454A-9E30-FF7476659206}
325 | EndGlobalSection
326 | EndGlobal
327 |
--------------------------------------------------------------------------------