1

Windows phone 用のかなり基本的な twitter アプリケーションに取り組んでいますが、サインイン プロセス中に問題が発生しました。私は問題を抱えていない tweetsharp api を使用しています。私はこのチュートリアルに従っています: http://mobile.tutsplus.com/tutorials/windows/wp7-integrating-twitter-with-your-app/

問題は、ユーザーがアプリにアクセス許可を付与すると、WebControl から検証コードを読み取ることができず、認証プロセスを終了できないことです。ユーザーにコードをコピーしてアプリに貼り付けてもらいたくありません。これはユーザーエクスペリエンスを妨げ、携帯電話のTwitterアプリでそれを行うのを見たことがないからです。問題を発見したと思いますが、それを修正する方法がわかりませんL

ベリファイア コードの検証ページから 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 コードを見たい場合は、質問してください。投稿を試みることができます。どんな助けでも大歓迎です!

ありがとう、スクイーズ

4

0 に答える 0