2016-12-25 13 views
0

実際にtwitterizerによってつぶやきを自動的に送信し、別のURLのapi JSONデータからデータを取得します。しかし、私はテキストボックスにURLを入れて、それは正常に動作し、私はテキストボックスからデータを取得しているが、プロセスが "承認のアプリ"に行くときに私は "認可"ボタンを押してページロード再び["textbox"]はnullです。以下は、前のedコードです。私はWebフォームでSubmitボタンを押した後にTextboxの値を一度保持する方法

<form id="form1" runat="server" action="TwitterStrap.aspx" > 
    <div style="position:absolute"> 
    <input type="text" id="text1" name="txtFirstName" placeholder="Enter Your First Name" /> 
     <br /> 
     <input id="Submit1" type="submit" value="submit" /> 
    </div> 
    </form> 

をTwitterStrap.aspxする "Frontsheet.aspx" のように1ページからのデータを掲載していますそして、これはTwitterStrap.aspx.csコード

protected void Page_Load(object sender, EventArgs e) 
     { 
      var text=""; 
      if (!IsPostBack) 
      { 
       text = Request.Form["txtFirstName"]; 
      } 

      using (var webClient = new System.Net.WebClient()) 
      { 




       var jsonString = webClient.DownloadString(text); 
       ProductsJsonModel Data = JsonConvert.DeserializeObject<ProductsJsonModel>(jsonString); 
       List<Product> ProductsFromUrl = Data.products; // All of your products are here. 

       // Your code 
       Session["value"] = ProductsFromUrl; 
       var title=""; 
       var cnt = ProductsFromUrl.Count; 

       for (int i = 0; i < cnt; i++) 
       { 
        title = ProductsFromUrl[0].title; 

       } 


       var oauth_consumer_key = "myLtWOTLGtLsjNsm15tUUpdEX"; 
       var oauth_consumer_secret = "uC9yHjPPV83Olvq0I8zt9eMwyucIpUcO70NduqNx0JuPQVyDZB"; 

       if (Request["oauth_token"] == null) 
       { 
        OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(
         oauth_consumer_key, 
         oauth_consumer_secret, 
         Request.Url.AbsoluteUri); 

        Response.Redirect(string.Format("http://twitter.com/oauth/authorize?oauth_token={0}", 
         reqToken.Token)); 

       } 
       else 
       { 
        string requestToken = Request["oauth_token"].ToString(); 
        string pin = Request["oauth_verifier"].ToString(); 

        var tokens = OAuthUtility.GetAccessToken(
         oauth_consumer_key, 
         oauth_consumer_secret, 
         requestToken, 
         pin); 

        OAuthTokens accesstoken = new OAuthTokens() 
        { 
         AccessToken = tokens.Token, 
         AccessTokenSecret = tokens.TokenSecret, 
         ConsumerKey = oauth_consumer_key, 
         ConsumerSecret = oauth_consumer_secret 
        }; 

        //TwitterResponse<TwitterStatus> response = TwitterStatus.Update(
        // accesstoken, 
        // "Testing!! It works (hopefully)."); 

        Twitterizer.TwitterResponse<TwitterStatus> response = TwitterStatus.Update(accesstoken, title, new StatusUpdateOptions() { UseSSL = true, APIBaseAddress = "http://api.twitter.com/1.1/" }); 

        if (response.Result == RequestResult.Success) 
        { 
         Response.Redirect("https://twitter.com/"); 
        } 
        else 
        { 
         Response.Redirect("https://twitter.com/"); 
        } 
       } 

      } 




      } 
+0

それを確認してくださいフォームが送信されなかった場合にのみ発生します。フォームが送信されなかった場合は、最初のSD名のrequest.formはありません。 – Joel

+0

Joelありがとう、どうすればいいですか? –

+0

答えを参照してくださいCodingYoshi – Joel

答えて

0

これを試してみてくださいです。私はあなたが何をしようとしているのかは分かっていませんが、ダウンロードした製品はセッション中です。認証トークンが提供されるとそのため、あなたはセッションからそれを得ることができます(!IsPostBackプロパティ)

protected void Page_Load(object sender, EventArgs e) 
{ 
    var text = ""; 
    if (IsPostBack) 
    { 
     text = Request.Form["txtFirstName"]; 
    } 

    string jsonString; 

    using (var webClient = new System.Net.WebClient()) 
    { 
     jsonString = webClient.DownloadString(text); 
    } 

    if (string.IsNullOrWhiteSpace(jsonString)) 
    { 
     // Nothing to do so we return 
     return; 
    } 


    ProductsJsonModel Data = JsonConvert.DeserializeObject<ProductsJsonModel>(jsonString); 
    List<Product> ProductsFromUrl = Data.products; // All of your products are here. 

    // Your code 
    // All the products are in the value session variable so we can get it later 
    Session["value"] = ProductsFromUrl; 

    var oauth_consumer_key = "myLtWOTLGtLsjNsm15tUUpdEX"; 
    var oauth_consumer_secret = "uC9yHjPPV83Olvq0I8zt9eMwyucIpUcO70NduqNx0JuPQVyDZB"; 

    if (Request["oauth_token"] == null) 
    { 
     OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(
      oauth_consumer_key, 
      oauth_consumer_secret, 
      Request.Url.AbsoluteUri); 

     Response.Redirect(string.Format("http://twitter.com/oauth/authorize?oauth_token={0}", 
      reqToken.Token)); 

    } 
    else 
    { 
     string requestToken = Request["oauth_token"].ToString(); 
     string pin = Request["oauth_verifier"].ToString(); 

     var tokens = OAuthUtility.GetAccessToken(
      oauth_consumer_key, 
      oauth_consumer_secret, 
      requestToken, 
      pin); 

     OAuthTokens accesstoken = new OAuthTokens() 
     { 
      AccessToken = tokens.Token, 
      AccessTokenSecret = tokens.TokenSecret, 
      ConsumerKey = oauth_consumer_key, 
      ConsumerSecret = oauth_consumer_secret 
     }; 

     //TwitterResponse<TwitterStatus> response = TwitterStatus.Update(
     // accesstoken, 
     // "Testing!! It works (hopefully)."); 

     var prods = Session["value"]; 
     if (prods != null) 
     { 
      ProductsFromUrl = Session["value"] as List<Product>; 

      var title = ""; 
      var cnt = ProductsFromUrl.Count; 

      for (int i = 0; i < cnt; i++) 
      { 
       title = ProductsFromUrl[0].title; 

      } 
      Twitterizer.TwitterResponse<TwitterStatus> response = 
       TwitterStatus.Update(accesstoken, title, new StatusUpdateOptions() 
       { UseSSL = true, APIBaseAddress = "http://api.twitter.com/1.1/" }); 

      if (response.Result == RequestResult.Success) 
      { 
       Response.Redirect("https://twitter.com/"); 
      } 
      else 
      { 
       Response.Redirect("https://twitter.com/"); 
      } 

      // clear the session 
      Session.Remove("value"); 
     } 

    } 
} 
+0

ありがとうYoshi ..しかし、私はまだプロセスを実行中に "認証ボタン"をクリックしてnull値を取得しています。 –

+0

私が指摘したようにポスト条件を変更しましたか? – CodingYoshi

+0

はい、私はあなたの答えに記述されているように変更しますが、「アプリケーションの承認」後にはvar tweetがnull値を示しています。 –

-1

CodingYoshiをした場合

using (var webClient = new System.Net.WebClient()) 
       { 
        var text = ""; 

        text = Request.Form["txtFirstName"]; 
        Session["Tweet"] = Request.Form["txtFirstName"]; 
        var tweet = Session["Tweet"]; 

        if (tweet != null) 
        { 
         // do whatever you need 
         text = tweet.ToString(); 
         // clear the session 
         Session.Remove("Tweet"); 
        } 
        if (!IsPostBack) 
        { 
         text = Request.Form["txtFirstName"]; 
        } 


        var jsonString = webClient.DownloadString(text); 
+1

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 – DimaSan

関連する問題