开发者

DotNetOpenAuth Twitter Consume StartSignIn

Trying to use the StartSignInWithTwitter method. 开发者_开发问答 When the method is called soon after an exception is thrown. This is using the latest version of DotNetOpenAuth. Would it have anything to do with me developing and running with locally? (VS2010) Is this how I should be doing authentication in the first place? I do see some different ways in the Samples pack that is included with the source.

{"The remote server returned an error: (401) Unauthorized."}

My code looks like below:

    public void TwitAuthInit()
    {
        TwitterConsumer.StartSignInWithTwitter(false).Send();
    }

    public ActionResult TwitAuth()
    {
        if (TwitterConsumer.IsTwitterConsumerConfigured)
        {
            string screenName;
            int userId;
            if (TwitterConsumer.TryFinishSignInWithTwitter(out screenName, out userId))
            {

                FormsAuthentication.SetAuthCookie(screenName, false);
                return RedirectToAction("Home", "Index");
            }

        }

        return View();
    }


To answer your question about "Is this how I should be doing authentication in the first place?":

You probably shouldn't be calling SetAuthCookie(screenName, false) with your screenName, since screen names (I believe) can be recycled. You should instead log the user in using a unique ID, either one you create in your own user database or Twitter's, and then use the screen name only as an alias that is displayed to the user (and perhaps other users if this user were to post something for public viewing). Otherwise, when Twitter recycles a username, that user will inherit all the data from the old user on your site -- not good.


Wanted to confirm that the 401 error is indeed solved by setting a non-empty callback URL on the twitter app config page.

From the Application Type block of the settings page:

To restrict your application from using callbacks, leave this field blank.


You have to go into TwitterConsumer.cs and change the following URLs:

Request token URL   https://api.twitter.com/oauth/request_token
Authorize URL   https://api.twitter.com/oauth/authorize
Access token URL    https://api.twitter.com/oauth/access_token

As Twitter changed their URLs. I didn't get the memo and spent way too much time debugging this.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜