Search code examples
windows-phone-8windows-phonetweetsharp

GetRequestToken is not working in TweetSharp on Windows Phone


I can't use GetRequestToken in TwitterService anymore

and also GetAccessToken!

TwitterService service = new TwitterService("ConsumerKey", "ConsumerKeySecret");    
service.GetRequestToken(Constants.CallbackUri, (request, response) =>
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    Request = request;
                    var uri = service.GetAuthorizationUri(request);
                    Dispatcher.BeginInvoke(() => AuthBrowser.Navigate(uri));
                }

            });

it gives me:

'TweetSharp.TwitterService' does not contain a definition for 'GetRequestToken' and no extension method 'GetRequestToken' accepting a first argument of type 'TweetSharp.TwitterService' could be found (are you missing a using directive or an assembly reference?)


Solution

  • I solved it by getting Request Token via Hammock(https://github.com/danielcrenna/hammock)

    and here is the code

     /// <summary>
        /// Gets Twitter Request Token 
        /// </summary>
        private void GetTwitterToken()
        {
            var credentials = new OAuthCredentials
            {
                Type = OAuthType.RequestToken,
                SignatureMethod = OAuthSignatureMethod.HmacSha1,
                ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader,
                ConsumerKey = "Your Consumer Key",
                ConsumerSecret = "Your Consumer Secret",
                Version = TwitterSettings.OAuthVersion,
                CallbackUrl = TwitterSettings.CallbackUri
            };
    
            var client = new RestClient
            {
                Authority = "https://api.twitter.com/oauth",
                Credentials = credentials,
                HasElevatedPermissions = true,
            };
    
            var request = new RestRequest
            {
                Path = "/request_token"
            };
            client.BeginRequest(request, new RestCallback(TwitterRequestTokenCompleted));
        }
    

    and

    private void TwitterRequestTokenCompleted(RestRequest request, RestResponse response, object userstate)
        {
            _oAuthToken = GetQueryParameter(response.Content, "oauth_token");
            _oAuthTokenSecret = GetQueryParameter(response.Content, "oauth_token_secret");
            var authorizeUrl = TwitterSettings.AuthorizeUri + "?oauth_token=" + _oAuthToken;
    
            if (String.IsNullOrEmpty(_oAuthToken) || String.IsNullOrEmpty(_oAuthTokenSecret))
            {
                Dispatcher.BeginInvoke(() => MessageBox.Show("error calling twitter"));
                return;
            }
    
            Dispatcher.BeginInvoke(() => AuthBrowser.Navigate(new Uri(authorizeUrl)));
        }
    

    and You can do the same with access token.