2017-05-23 6 views
-2

私はユーザーにAccessTokenを取得したいと考えています。レスポンスコードを取得できません

ユーザーが登録/ログインボタンをクリック:

  $.ajax({ 
      url: 'Register', 
      type: 'GET', 
      data: { m:true }, 
      contentType: 'application/json; charset=utf-8', 
      success: function (response) { 
       if (response.success) { 
       } else { 
       } 
      }, 
      error: function() { 
      } 
      }); 

マイregisterメソッド:そのコードを交換するよりも解像度で

  Uri uri = new Uri(FacebookHelpers.GetFacebookLoginURL()); 
      var res = await FacebookHelpers.FacebookRequest<object>(uri).ConfigureAwait(false); 

、私は、コードを取得するためにFacebookRequestから生じる取得したいですアクセストークン

マイGetFacebookLoginUrl機能:私のFacebookRequest機能で

  var redirectUri = "https://www.facebook.com/connect/login_success.html"; 
      var uri = GetUri("https://www.facebook.com/dialog/oauth", 
       Tuple.Create("client_id", FacebookAppId), 
       Tuple.Create("redirect_uri", redirectUri), 
       Tuple.Create("response_type", "code"), 
       Tuple.Create("scope", "public_profile,email"), 
       Tuple.Create("state", Convert.ToString(new Random().Next(9999))) 
       ); 

 public static async Task<T> FacebookRequest<T>(Uri uri) 
     { 
      string json; 
      using (HttpClient client = new HttpClient()) 
      { 
       json = await client.GetStringAsync(uri).ConfigureAwait(false); 
      } 

      try 
      { 
       var result = JsonConvert.DeserializeObject<T>(json); 
       return result; 
      } 
      catch (JsonException ex) 
      { 
       throw new ArgumentException("Unable to deserialize the Facebook response.", ex); 
      } 
     } 

FacebookRequest機能が提供されたURLからコードを取得しようとすると問題が表示されます。

解析値の間に予期しない文字が検出されました:<。 0、位置0

Json応答には、メソッドが呼び出された場所と同じページが含まれています。 FacebookRequestはコードを返しません。代わりに成功を返します。

目標:データベースからユーザーを取得し、そのアカウントを自分のボットにリンクしたいと考えています。ユーザーが存在しない場合は、最初に登録し、ボットとリンクします。

+0

あなたの 'json'変数に実際に含まれているものを確認しましたか? – CBroe

+0

私の質問を編集しました。これは、メソッドが呼び出された場所からの全体のHTMLを含んでいます... –

+1

あなたはバックグラウンドでFacebookのログインダイアログを読み込むことができません - あなたはそのアドレスにユーザーをリダイレクトする必要があります。 (ユーザーがアドレスバーを介して実際にフィッシングサイトではなくFacebookに資格情報を入力していることを確認する必要があることを絶対に明白な理由として) – CBroe

答えて

1

バックグラウンドでFacebookのログインダイアログを読み込むことはできません。ユーザーをそのアドレスにリダイレクトする必要があります。ユーザーのブラウザで呼び出す必要があります。それをバックグラウンドで試してみると、うまくいかないでしょう。

コードまたはアクセストークンが返されるかどうか:アクセストークンを直接返すように指定できます。その場合、トークンはリダイレクトURIのフラグメント部分に渡されます。クライアント側コードを使用してそこから取得するだけです。それはここでの選択肢ではないと思います。 (その詳細が必要な場合は、パラメータresponse_typeと可能な値はここに記載されていますhttps://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#logindialog

+0

もう一度ありがとうございます:))) –

関連する問題