首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# Asp.net领英授权使用带DotNetOpenAuth的Linkedintoolkit

C# Asp.net领英授权使用带DotNetOpenAuth的Linkedintoolkit
EN

Stack Overflow用户
提问于 2011-08-02 05:11:55
回答 1查看 2.8K关注 0票数 1

我试图授权我的ASP.net应用程序使用Linkdin,但似乎无法正确地进行身份验证。我希望有人能看看我的源代码,看看我可能做错了什么。

首先,我试图遵循这个Linkedintoolkit文档中的步骤,尽管我正在遵循这些步骤,但我仍然没有运气。

据我所知,这一过程最简单的术语如下。

  1. 创建DotNetOpenAuth的IConsumerTokenManager实现
  2. 使用WebOAuthAuthorization类来授权我的应用程序,并为未来的API调用返回一个访问令牌。

我的IConsumerTokenManager实现如下所示:

我在本例中添加了一个假api密钥和一个秘密密钥,原因很明显

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DotNetOpenAuth.OAuth.ChannelElements;
using DotNetOpenAuth.OAuth.Messages;

namespace UserLibrary.SocialMedia
{
    public class ConsumerTokenManager : IConsumerTokenManager
    {


        private const string API_KEY = "ylk7j2jq4j7l";
        private const string SECRET_KEY = "WH3dlPFhPyWG0xlw";

        private Dictionary<string, string> tokensAndSecrets = new Dictionary<string, string>();

        public ConsumerTokenManager()
        {
            ConsumerKey = API_KEY;
            ConsumerSecret = SECRET_KEY;
        }


        #region ITokenManager Members

        public string ConsumerKey { get; private set; }

        public string ConsumerSecret { get; private set; }

        public string GetTokenSecret(string token)
        {
            return this.tokensAndSecrets[token];
        }

        public void StoreNewRequestToken(UnauthorizedTokenRequest request, ITokenSecretContainingMessage response)
        {
            this.tokensAndSecrets[response.Token] = response.TokenSecret;
        }

        public void ExpireRequestTokenAndStoreNewAccessToken(string consumerKey, string requestToken, string accessToken, string accessTokenSecret)
        {
            this.tokensAndSecrets.Remove(requestToken);
            this.tokensAndSecrets[accessToken] = accessTokenSecret;
        }

        /// <summary>
        /// Classifies a token as a request token or an access token.
        /// </summary>
        /// <param name="token">The token to classify.</param>
        /// <returns>Request or Access token, or invalid if the token is not recognized.</returns>
        public TokenType GetTokenType(string token)
        {
            throw new NotImplementedException();
        }

        #endregion

    }
}

,下面是调用BeginAuthorization的代码块

代码语言:javascript
复制
ConsumerTokenManager consumerTokenManager = new ConsumerTokenManager();
            _webOAuthorization = new WebOAuthAuthorization(consumerTokenManager, _accessToken);

        _webOAuthorization.BeginAuthorize();

        _accessToken = _webOAuthorization.CompleteAuthorize();

当'BeginAuthorization()‘被调用时,我被重定向到“授予K2PS发布者访问您的LinkedIn帐户”"Patrick“,只有当您信任该应用程序时才允许访问”LinkedIn“页面,然后单击'Ok我将允许它’,这将我返回到我的web应用程序。但是,如果我试图返回字符串,'_completeAuthorization()‘方法永远不会命中,并且它的值为null。

同样值得注意的是,我的控制台输出在此过程中抛出一个线程异常。

下面的是我的控制台out的副本

类型'System.Threading.ThreadAbortException‘的第一次异常发生在mscorlib.dll中,类型'System.Threading.ThreadAbortException’的例外发生在mscorlib.dll中,但未在用户代码中处理

我对“誓言”相当陌生,但我一直在浏览API,似乎无法解决这个问题。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-02 05:21:40

您可以尝试一下我在前面成功实现的示例中找到的这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6907530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档