编程语言
首页 > 编程语言> > C#-提取Twitter PIN信息,WP7

C#-提取Twitter PIN信息,WP7

作者:互联网

我一直在关注这个很棒的教程:

http://buildmobile.com/twitter-in-a-windows-phone-7-app/#fbid=o0eLp-OipGa

但似乎使用的引脚提取方法对我不起作用或已过时.我不是html抓取的专家,并且想知道是否有人可以帮助我找到提取图钉的解决方案.本教程使用的方法是:

private void BrowserNavigated(object sender, NavigationEventArgs e){
if (AuthenticationBrowser.Visibility == Visibility.Collapsed) {
    AuthenticationBrowser.Visibility = Visibility.Visible;
}
if (e.Uri.AbsoluteUri.ToLower().Replace("https://", "http://") == AuthorizeUrl) {
    var htmlString = AuthenticationBrowser.SaveToString();
    var pinFinder = new Regex(@"<DIV id=oauth_pin>(?<pin>[A-Za-z0-9_]+)</DIV>", RegexOptions.IgnoreCase);
    var match = pinFinder.Match(htmlString);
    if (match.Length > 0) {
        var group = match.Groups["pin"];
        if (group.Length > 0) {
            pin = group.Captures[0].Value;
            if (!string.IsNullOrEmpty(pin)) {
                RetrieveAccessToken();
            }
        }
    }
    if (string.IsNullOrEmpty(pin)){
        Dispatcher.BeginInvoke(() => MessageBox.Show("Authorization denied by user"));
    }
    // Make sure pin is reset to null
    pin = null;
    AuthenticationBrowser.Visibility = Visibility.Collapsed;
}

}

在运行该代码时,“ match”始终以null结尾,并且永远不会找到该引脚.本教程中的其他所有内容都可以使用,但是由于页面的新结构,我不知道如何操纵此代码来提取图钉.

我真的很感激时间

麦克风

解决方法:

我发现Twitter有2个不同的PIN页面,我认为它们会根据您的浏览器确定将您重定向到哪个页面.

像字符串解析这样简单的事情将对您有用.我遇到的第一个PIN页面的PIN代码包装在< .code>标记,因此只需查找< .code>并解析出来:

 if (innerHtml.Contains("<code>"))
 {
     pin = innerHtml.Substring(innerHtml.IndexOf("<code>") + 6, 7);
 }

如果我没记错的话,我遇到的另一页(看起来就像您正在使用的教程中的那一页)是使用id =“ oauth_pin”包装的.因此,还要解析一下:

else if(innerHtml.Contains("oauth_pin"))
{
     pin = innerHtml.Substring(innerHtml.IndexOf("oauth_pin") + 10, 7);
}

innerHtml是包含页面正文的字符串.似乎是var htmlString = AuthenticationBrowser.SaveToString();从您的代码.

我在我的C#程序中都使用了这两种方法,它们的效果很好,很完整:

private void WebBrowser1DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
      var innerHtml = webBrowser1.Document.Body.InnerHtml.ToLower();
      var code = string.Empty;
      if (innerHtml.Contains("<code>"))
      {
          code = innerHtml.Substring(innerHtml.IndexOf("<code>") + 6, 7);
      }
      else if(innerHtml.Contains("oauth_pin"))
      {
          code = innerHtml.Substring(innerHtml.IndexOf("oauth_pin") + 10, 7);
      }
      textBox1.Text = code;
}

让我知道您是否有任何问题,希望对您有所帮助!!

标签:twitter,api,windows-phone-7,c
来源: https://codeday.me/bug/20191201/2078384.html