C# 在C语言中使用mozapi#

C# 在C语言中使用mozapi#,c#,.net,api,hash,C#,.net,Api,Hash,我正在尝试在winform应用程序中访问MozAPI。我看了一本PHP指南,试图将其转换为C语言,但遇到了问题 例如,PHP: 我想是我的签名搞砸了。文件中说: 签名:访问ID、Expires参数和密钥的HMAC-SHA1哈希。在Mozscape接受签名为有效签名之前,安全哈希必须是base64编码,然后是URL编码 有什么想法吗?我得到的错误是身份验证失败。通过查看解决了这个问题 这是正确生成密钥的方法: public string CreateHashSignature(string str

我正在尝试在winform应用程序中访问MozAPI。我看了一本PHP指南,试图将其转换为C语言,但遇到了问题

例如,PHP:

我想是我的签名搞砸了。文件中说:

签名:访问ID、Expires参数和密钥的HMAC-SHA1哈希。在Mozscape接受签名为有效签名之前,安全哈希必须是base64编码,然后是URL编码


有什么想法吗?我得到的错误是身份验证失败。

通过查看解决了这个问题

这是正确生成密钥的方法:

public string CreateHashSignature(string strMozAccessId, string strMozSecretKey, string strTimeStamp)
    {
        string token = strMozAccessId + Environment.NewLine.Replace("\r", "") + strTimeStamp;

        using (var hmac = new HMACSHA1(Encoding.UTF8.GetBytes(strMozSecretKey), true))
        {
            var hash = hmac.ComputeHash(Encoding.ASCII.GetBytes(token));
            var hashString = BitConverter.ToString(hash).Replace("-", "").ToLower();
            return HttpUtility.UrlEncode(Convert.ToBase64String(hash));
        }
    }

你可以使用我的图书馆LINQTOMOZ

只需将访问密钥和安全密钥放入MOZService构造函数。我们走了

MOZService service = new MOZService("your access key","your security key");
var urlMetrics = service.QueryURLMetrics();
var result = urlMetrics.Where((arg) => sites.Contains(arg.SearchingURL) && arg.SourceCols == URLMetricsCols.FREE)
    .Select(x => new { equityLinkNumber = x.MetricsResult.ueid, cononicalURL = x.MetricsResult.uu })
    .OrderByDescending(x => x.equityLinkNumber);

这个问题已经有了公认的答案。你的答案比已经被接受的答案有什么改进?1行代码而不是10行。。。在你需要查询数据之后。。。所以我发现它对人们很有用:)
MOZService service = new MOZService("your access key","your security key");
var urlMetrics = service.QueryURLMetrics();
var result = urlMetrics.Where((arg) => sites.Contains(arg.SearchingURL) && arg.SourceCols == URLMetricsCols.FREE)
    .Select(x => new { equityLinkNumber = x.MetricsResult.ueid, cononicalURL = x.MetricsResult.uu })
    .OrderByDescending(x => x.equityLinkNumber);