Пример #1
0
        public LoginPage(MainPage mainPage, string appId, string extendedPermissions,bool deleteCookie) {

            _mainPage = mainPage;

            Title = "Login"; //ページのタイトル

            _fb = new FacebookClient();

            var exWebView = new ExWebView(deleteCookie) {
                VerticalOptions = LayoutOptions.FillAndExpand
            };

            exWebView.Navigating += (s, e) => {
                Debug.WriteLine("■Navigating=" + e.Url);
            };

            //Uri遷移のイベントを処理する
            exWebView.Navigated += (s, e) => {
                Debug.WriteLine("■Navigated="+e.Url);

                //リクエストUriから認証の状態を判断する
                FacebookOAuthResult oauthResult;
                if (!_fb.TryParseOAuthCallbackUrl(new Uri(e.Url), out oauthResult)) {
                    return; //認証継続中
                }
                if (oauthResult.IsSuccess) {
                    //認証成功
                    LoginSucceded(oauthResult.AccessToken);
                } else {
                    //認証失敗
                    LoginSucceded(string.Empty);
                }
            };
            //exWebView.Navigate += request => {
            //    //リクエストUriから認証の状態を判断する
            //    FacebookOAuthResult oauthResult;
            //    if (!_fb.TryParseOAuthCallbackUrl(new Uri(request), out oauthResult)) {
            //        return; //認証継続中
            //    }
            //    if (oauthResult.IsSuccess) {
            //        //認証成功
            //        LoginSucceded(oauthResult.AccessToken);
            //    } else {
            //        //認証失敗
            //        LoginSucceded(string.Empty);
            //    }
            //};

            //認証URLへ移動 (https://www.facebook.com/dialog/oauth)
            exWebView.Source = _fb.GetLoginUrl(appId, extendedPermissions).AbsoluteUri;
            Content = exWebView;
        }
Пример #2
0
        private async void LoginSucceded(string accessToken) {
            try {
                var fb = new FacebookClient(accessToken);
                var json = await fb.GetTaskAsync("me?fields=id");
                var o = JObject.Parse(json);
                var id = (string)o["id"];
                _mainPage.SetStatus(true, accessToken, id);//ログイン成功
                await Navigation.PopModalAsync();//メインビューへ戻る
            } catch (Exception ex) {
                DisplayAlert("ERROR", ex.Message, "OK");
            }
//            await Navigation.PopAsync();//メインビューへ戻る
        }
Пример #3
0
 public Graph(FacebookClient fb) {
     _fb = fb;
     Refresh(false);
 }
Пример #4
0
 public void SetStatus(bool isLogin, string accessToken, string id)
 {
     _isLogin = isLogin;
     if (_isLogin) {
         _fb = new FacebookClient(accessToken);
         _img.Source = string.Format("https://graph.facebook.com/{0}/picture?width=100&height=100", id);
         _graph = new Graph(_fb);
     } else {
         _fb = null;
         Navigation.PushModalAsync(new LoginPage(this, "YOUR_FACEBOOK_APP_ID", ExtendedPermissions,deleteCookie));
         deleteCookie = false;
     }
 }