コード例 #1
0
ファイル: App.cs プロジェクト: nomada2/SimpleAuth
        public App()
        {
            var scopes = new[]
            {
                "https://www.googleapis.com/auth/userinfo.email",
                "https://www.googleapis.com/auth/userinfo.profile"
            };

            //api = new GoogleApi("google",
            //	   "clientid",
            //	"clientsecret",new ModernHttpClient.NativeMessageHandler())
            //{
            //	Scopes = scopes,
            //};

            api = new FacebookApi("facebook", "", "");

            var button = new Button
            {
                Text = "Login",
            };

            button.Clicked += async(sender, args) =>
            {
                try
                {
                    var account = await api.Authenticate();

                    var me = await api.Get("me");

                    Console.WriteLine(account.Identifier);
                }
                catch (TaskCanceledException)
                {
                    Console.WriteLine("Canceled");
                }
            };
            // The root page of your application
            MainPage = new ContentPage {
                Content = new StackLayout {
                    VerticalOptions = LayoutOptions.Center,
                    Children        =
                    {
                        button
                    }
                }
            };
        }
コード例 #2
0
ファイル: App.cs プロジェクト: Clancey/SimpleAuth
        Button CreateApiButton(AuthenticatedApi api)
        {
            var button = new Button
            {
                Text = $"Login: {api.GetType().Name}",
            };
            button.Clicked += async (sender, args) =>
            {
                try
                {
                    var account = await api.Authenticate();
                    var me = await api.Get("me");

                    Console.WriteLine(account.Identifier);
                }
                catch (TaskCanceledException)
                {
                    Console.WriteLine("Canceled");
                }
            };
            return button;

        }
コード例 #3
0
        public App()
        {
            //Hook up our Forms login page for Basic Auth
            BasicAuthApi.ShowAuthenticator = (BasicAuthAuthenticator obj) => {
                MainPage.Navigation.PushModalAsync(new LoginPage(obj));
            };

            var scopes = new[]
            {
                "https://www.googleapis.com/auth/userinfo.email",
                "https://www.googleapis.com/auth/userinfo.profile"
            };

            //api = new GoogleApi("google",
            //	   "clientid",
            //	"clientsecret",new ModernHttpClient.NativeMessageHandler())
            //{
            //	Scopes = scopes,
            //};

            //api = new FacebookApi("facebook","","");
            api = new OAuthPasswordApi("myapi", "clientid", "clientsecret",
                                       "https://serverurl.com",
                                       "https://tokenurl.com",
                                       "https://refreshurl.com")
            {
                //Hook up our Forms login page for Oauth with Password
                CurrentShowAuthenticator = (obj) => {
                    MainPage.Navigation.PushModalAsync(new LoginPage(obj));
                },
            };

            var button = new Button
            {
                Text = "Login",
            };

            button.Clicked += async(sender, args) =>
            {
                try
                {
                    var account = await api.Authenticate();

                    var me = await api.Get("me");

                    Console.WriteLine(account.Identifier);
                }
                catch (TaskCanceledException)
                {
                    Console.WriteLine("Canceled");
                }
            };
            // The root page of your application
            MainPage = new NavigationPage(new ContentPage {
                Content = new StackLayout {
                    VerticalOptions = LayoutOptions.Center,
                    Children        =
                    {
                        button
                    }
                }
            });
        }
コード例 #4
0
        public App()
        {
            //Hook up our Forms login page for Basic Auth
            BasicAuthApi.ShowAuthenticator = (IBasicAuthenicator obj) =>
            {
                MainPage.Navigation.PushModalAsync(new LoginPage(obj));
            };

            string FacebookClientId = "457891661734324";
            string FacebookSecret   = "2ef3d25a410dcb9f8b952388790e462f";

            string InstagramClientId = "f2c421d810824581ac758861e56e5340";
            string InstagramSecret   = "2465b93d4cc44355a4ccf32f3eca707a";

#if __ANDROID__
            string GoogleClientId = "646679266669-quj4b4frm8gi4knn6269me7ss9cefj7c.apps.googleusercontent.com";
            string GoogleSecret   = GoogleApi.NativeClientSecret; //"uzj06SA8A66Y9mOA1rSjmQH7";
#else
            //string GoogleClientId = "992461286651-k3tsbcreniknqptanrugsetiimt0lkvo.apps.googleusercontent.com";
            string GoogleClientId = "839224062559-nono05a9u9vpdnrue8irjb4t0sf7e1a7.apps.googleusercontent.com";
            string GoogleSecret   = "Ulyk8Nm45Umzkx7kReEOZHUk";
#endif

            var logoutButton = new Button()
            {
                Text = "Logout"
            };
            logoutButton.Clicked += async(sender, args) =>
            {
                if (_sourceApi != null)
                {
                    _sourceApi.Logout();
                    _sourceApi = null;
                }
            };

            // https://developers.facebook.com/docs/graph-api/reference/user/accounts/
            var facebookListPages = new Button()
            {
                Text = "Facebook : Get Pages"
            };
            facebookListPages.Clicked += async(sender, args) =>
            {
                var apiResult = await _sourceApi.Get("/v4.0/me/accounts");

                Debug.WriteLine(apiResult);

                FacebookAccounts facebookAccounts = JsonConvert.DeserializeObject <FacebookAccounts>(apiResult);

                if (facebookAccounts == null || facebookAccounts.data.Length == 0)
                {
                    await MainPage.DisplayAlert("Information", "User is not associated to any other pages", "Ok");
                }
                else
                {
                    await MainPage.DisplayAlert("Information", $"User is associated {facebookAccounts.data.Length} pages", "Ok");
                }
            };

            //https://developers.facebook.com/docs/graph-api/reference/user/photos/#uploading-photos
            //https://developers.facebook.com/docs/graph-api/photo-uploads
            var facebookUploadPhoto = new Button()
            {
                Text = "Facebook : Upload Photo"
            };
            facebookUploadPhoto.Clicked += async(sender, args) =>
            {
                await Share.RequestAsync(new ShareFileRequest()
                {
                    Title = "Test Upload",
                    File  = new ShareFile(@"..\Appx\Assets\Square44x44Logo.scale-200.png")
                });
            };

            var googlePhotosUpload = new Button()
            {
                Text = "Google Photos : Upload Photo"
            };
            googlePhotosUpload.Clicked += async(sender, args) =>
            {
                Dictionary <string, string> headers = new Dictionary <string, string>()
                {
                    { "X-Goog-Upload-File-Name", "TestPhotoName.png" },
                    { "X-Goog-Upload-Protocol", "raw" }
                };

                var bytes       = File.ReadAllBytes(@"..\Appx\Assets\Square44x44Logo.scale-200.png");
                var httpContent = new ByteArrayContent(bytes);
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

                var apiResult = await _sourceApi.Post(httpContent, "/v1/uploads", null, headers);

                Debug.WriteLine(apiResult);

                var googleMediaItem = new MediaItems()
                {
                    NewMediaItems = new NewMediaItem[] { new NewMediaItem()
                                                         {
                                                             Description     = "Test IPB Upload",
                                                             SimpleMediaItem = new SimpleMediaItem()
                                                             {
                                                                 UploadToken = apiResult
                                                             }
                                                         } }
                };

                var googleMediaItemJson = JsonConvert.SerializeObject(googleMediaItem);

                var stringContent = new StringContent(googleMediaItemJson);
                stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                var newMediaResult = await _sourceApi.Post(stringContent, "/v1/mediaItems:batchCreate");

                Debug.Write(newMediaResult);
            };


            // The root page of your application
            MainPage = new NavigationPage(new ContentPage
            {
                Content = new StackLayout
                {
                    VerticalOptions = LayoutOptions.Center,
                    Children        =
                    {
                        CreateApiButton(new GoogleApi("google",                          GoogleClientId,    GoogleSecret)
                        {
                            Scopes = new[]
                            {
                                "https://www.googleapis.com/auth/userinfo.email",
                                "https://www.googleapis.com/auth/userinfo.profile",
                                "https://www.googleapis.com/auth/photoslibrary.appendonly"
                            },
                        }),
                        CreateApiButton(new FacebookApi("facebook",                      FacebookClientId,  FacebookSecret)),
                        CreateApiButton(new InstagramApi("instagram",                    InstagramClientId, InstagramSecret)),
                        CreateApiButton(new OAuthPasswordApi("myapi",                    "clientid",        "clientsecret",
                                                             "https://serverurl.com",
                                                             "https://tokenurl.com",
                                                             "https://refreshurl.com")),
                        facebookListPages,
                        facebookUploadPhoto,
                        googlePhotosUpload,
                        logoutButton
                    }
                }
            });
        }