我试图允许用户使用FlickrNet库/ API从Asp.net应用程序上传视频到Flickr.我从Flickr获得了API密钥和API秘密.另外,我正在使用FlickrNet库中的AuthGetFrob方法检索authToken.
我的使用陈述如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FlickrNet;
Run Code Online (Sandbox Code Playgroud)
我创建了两种方法来完成这项任务.
获取并返回AuthToken的一个
private string GetAuthenticateToken()
{
Flickr flickr = new Flickr(FLICKR_API_KEY, FLICKR_API_SECRET);
string frob = flickr.AuthGetFrob();
return flickr.AuthCalcUrl(frob, AuthLevel.Write);
}
Run Code Online (Sandbox Code Playgroud)
一个使用AuthToken上传文件
public void UploadFile(string fileName, string title, string description)
{
try
{
string authToken = GetAuthenticateToken();
Flickr flickr = new Flickr(FLICKR_API_KEY, FLICKR_API_SECRET, authToken);
string photoId = flickr.UploadPicture(fileName, title, description, "", true, false, false);
}
catch (Exception ex)
{
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我调用'UploadPicture'时,会抛出以下异常.'无效的身份验证令牌(98)'.
AuthRequest Http请求的内容如下所示.
<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="ok">
<frob>72157627073829842-9d8e31b9dcf41ea1-162888</frob>
</rsp>
Run Code Online (Sandbox Code Playgroud)
并且上传方法Http请求的内容如下所示.
<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="fail">
<err code="98" msg="Invalid auth token" />
</rsp>
Run Code Online (Sandbox Code Playgroud)
我在这里的flickr论坛上看到了类似的帖子,但根据我的理解,似乎我正在做的一切正确但仍然无法弄清楚我做错了什么.
任何帮助将不胜感激.
好吧所以我讨厌回答我自己的问题,特别是那些没有得到选票,没有答案,也没有得到很少意见的问题,但是我从Flickr的支持中得到了答案,所以我想我也可以在这里发布.如果有人认为这是有用的.
AuthCalcUrl返回一个URL,而不是实际的身份验证令牌.此外,更多的是桌面身份验证,而不是基于Web的身份验证.您链接到的论坛帖子正在谈论移动身份验证.对于Web身份验证,您需要 按照此处详述的流程进行操作: 因此,您调用Flickr.AuthCalcWebUrl,然后将用户重定向到该URL.然后,当他们进行身份验证后,他们将被发送到您在API密钥设置中设置的回拨网址.此网址将包含一个frob.然后最后在回调网址页面中,您从查询字符串中获取frob并调用Flickr.AuthGetToken(frob); 如果要查看此操作,请从示例页面下载示例ASP.Net网站.