从WP7 WebControl中检索twitter验证程序代码

时间:2013-03-27 18:55:19

标签: c# html windows-phone-7 twitter tweetsharp

我一直在为Windows手机开发一个相当基本的Twitter应用程序,我在登录过程中遇到了一个问题。我正在使用tweetsharp api,我没有遇到任何问题。我一直在关注本教程:http://mobile.tutsplus.com/tutorials/windows/wp7-integrating-twitter-with-your-app/

问题是,一旦用户授予我的应用程序权限,我就无法从WebControl读取验证程序代码并完成身份验证过程。我不想让用户复制代码并粘贴回我的应用程序,因为这会妨碍用户体验,而且我从未在移动电话上看过Twitter应用程序。我想我已经找到了问题,但我不确定如何修复它

以下是从验证页面解析AbsoluteUri的代码:

    // From Hammock.Extensions.StringExtensions.cspublic 
    static IDictionary<string, string> ParseQueryString(string query)
    {    
        // [DC]: This method does not URL decode, and cannot handle decoded input    
        if (query.StartsWith("?")) query = query.Substring(1);    
        if (query.Equals(string.Empty))    
        {        
            return new Dictionary<string, string>();    
        }    
        var parts = query.Split(new[] { '&' });    
        return parts.Select(        
            part => part.Split(new[] { '=' })).ToDictionary(            
                pair => pair[0], pair => pair[1] 
            );
    }

以下是调用解析方法的代码:

    // called everytime navigation occurs in the WebControl
    private void browserNavigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        MessageBox.Show(e.Uri.AbsoluteUri); // for debugging
        MessageBox.Show(Browser.SaveToString()); // for debugging
        if (e.Uri.AbsoluteUri.Contains("oauth_verifier"))
        {
            var values = ParseQueryString(e.Uri.AbsoluteUri);
            string verifier = values["oauth_verifier"];
            Globals.client.GetAccessToken(Globals.requestToken, verifier, processAccessToken);
            Dispatcher.BeginInvoke(() => { Browser.Visibility = System.Windows.Visibility.Collapsed; });
            MessageBox.Show(verifier); // for debugging
        }
    }

以下是验证者页面的AbsoluteUri:https://api.twitter.com/oauth/authorize

AbsoluteUri不包含验证码!我相信这是问题,因为教程中的代码假定验证程序代码在页面的AbsoluteUri中。我看了一下页面的html,希望通过它来解析验证器,但不幸的是twitter隐藏了它。有没有人有任何建议或解决方法来解决这个问题?如果我绝对需要,我可以申请xauth访问,但我将其作为最后的手段保存。如果有人想看到HTML代码只是问我可以尝试发布它。任何帮助都非常感谢!

谢谢, Squeesh

0 个答案:

没有答案