Example #1
0
    public void UnLinkFacebookLinkTwitter()
    {
        // テストデータ作成
        NCMBUser user = new NCMBUser();

        user.AuthData = facebookParams.param;

        // authData登録
        user.LogInWithAuthDataAsync((NCMBException e) => {
            Assert.Null(e);
        });
        NCMBTestSettings.AwaitAsync();

        // authData追加
        user.LinkWithAuthDataAsync(twitterParams.param, (NCMBException e1) => {
            Assert.Null(e1);
        });
        NCMBTestSettings.AwaitAsync();
        Assert.True(user.IsLinkWith("twitter"));

        // authData削除
        user.UnLinkWithAuthDataAsync("facebook", (NCMBException e2) => {
            Assert.Null(e2);
            NCMBTestSettings.CallbackFlag = true;
        });
        NCMBTestSettings.AwaitAsync();

        // 削除成功の確認
        Assert.IsNotEmpty(NCMBUser._getCurrentSessionToken());
        Assert.True(user.IsLinkWith("twitter"));
        Assert.False(user.IsLinkWith("facebook"));
        Assert.True(NCMBTestSettings.CallbackFlag);
        NCMBUser.LogOutAsync();
    }
 /// <summary>
 /// 非同期処理で現在ログインしているユーザに、authDataの追加を行います。<br/>
 /// authDataが登録されていないユーザならログインし、authDataの登録を行います。<br/>
 /// authDataが登録されているユーザなら、authDataの追加を行います。<br/>
 /// 通信結果が必要な場合はコールバックを指定するこちらを使用します。
 /// </summary>
 /// <param name="linkParam">authData</param>
 /// <returns>登録したユーザ</returns>
 public static IObservable <NCMBUser> LinkWithAuthDataAsyncAsStream(this NCMBUser user, Dictionary <string, object> linkParam)
 {
     return(Observable.Create <NCMBUser>(observer =>
     {
         var gate = new object();
         var isDisposed = false;
         user.LinkWithAuthDataAsync(linkParam, error =>
         {
             lock (gate)
             {
                 if (isDisposed)
                 {
                     return;
                 }
                 if (error == null)
                 {
                     observer.OnNext(user);
                     observer.OnCompleted();
                 }
                 else
                 {
                     observer.OnError(error);
                 }
             }
         });
         return Disposable.Create(() =>
         {
             lock (gate)
             {
                 isDisposed = true;
             }
         });
     }));
 }
Example #3
0
    public void LinkWithAuthDataAsyncInvalidTwitter()
    {
        // テストデータ作成
        NCMBUser user = new NCMBUser();

        user.AuthData = facebookParams.param;

        // authData登録
        user.LogInWithAuthDataAsync((NCMBException e) => {
            Assert.Null(e);
        });
        NCMBTestSettings.AwaitAsync();

        // authData追加
        user.LinkWithAuthDataAsync(invalidTwitterParams.param, (NCMBException e) => {
            Assert.AreEqual(NCMBException.OAUTH_ERROR, e.ErrorCode);
            NCMBTestSettings.CallbackFlag = true;
        });
        NCMBTestSettings.AwaitAsync();

        // 追加失敗の確認
        Assert.IsNotEmpty(NCMBUser._getCurrentSessionToken());
        Assert.True(user.IsLinkWith("facebook"));
        Assert.False(user.IsLinkWith("twitter"));
        Assert.True(NCMBTestSettings.CallbackFlag);
        NCMBUser.LogOutAsync();
    }
Example #4
0
    public IEnumerator LinkWithAuthDataAsyncTwitter()
    {
        // テストデータ作成
        NCMBUser user = new NCMBUser();

        user.AuthData = facebookParams.param;

        // authData登録
        user.LogInWithAuthDataAsync((NCMBException e) => {
            Assert.Null(e);
            NCMBTestSettings.CallbackFlag = true;
        });
        yield return(NCMBTestSettings.AwaitAsync());

        NCMBTestSettings.CallbackFlag = false;

        // authData追加
        user.LinkWithAuthDataAsync(twitterParams.param, (NCMBException e1) => {
            Assert.Null(e1);
            NCMBTestSettings.CallbackFlag = true;
        });
        yield return(NCMBTestSettings.AwaitAsync());

        // 追加成功の確認
        Assert.IsNotEmpty(NCMBUser._getCurrentSessionToken());
        Assert.True(user.IsLinkWith("facebook"));
        Assert.True(user.IsLinkWith("twitter"));
        Assert.True(NCMBTestSettings.CallbackFlag);
    }
Example #5
0
        /// <summary>
        /// 非同期処理で現在ログインしているユーザに、authDataの追加を行います。<br/>
        /// authDataが登録されていないユーザならログインし、authDataの登録を行います。<br/>
        /// authDataが登録されているユーザなら、authDataの追加を行います。<br/>
        /// </summary>
        /// <param name="linkParam">authData</param>
        public static Task <NCMBUser> LinkWithAuthDataTaskAsync(this NCMBUser user, Dictionary <string, object> linkParam)
        {
            var tcs = new TaskCompletionSource <NCMBUser>();

            user.LinkWithAuthDataAsync(linkParam, error =>
            {
                if (error != null)
                {
                    tcs.SetException(error);
                }
                else
                {
                    tcs.SetResult(user);
                }
            });
            return(tcs.Task);
        }