我试图允许用户使用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;
我创建了两种方法来完成这项任务.
获取并返回AuthToken的一个
private string GetAuthenticateToken() { Flickr flickr = new Flickr(FLICKR_API_KEY,FLICKR_API_SECRET); string frob = flickr.AuthGetFrob(); return flickr.AuthCalcUrl(frob,AuthLevel.Write); }
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; } }
但是,当我调用’UploadPicture’时,会抛出以下异常. ‘无效的身份验证令牌(98)’.
AuthRequest Http请求的内容如下所示.
<?xml version="1.0" encoding="utf-8" ?> <rsp stat="ok"> <frob>72157627073829842-9d8e31b9dcf41ea1-162888</frob> </rsp>
<?xml version="1.0" encoding="utf-8" ?> <rsp stat="fail"> <err code="98" msg="Invalid auth token" /> </rsp>
我在flickr论坛here上看到了类似的帖子,但根据我的理解,似乎我正在做的一切正确但仍然无法弄清楚我做错了什么.
任何帮助将不胜感激.
解决方法
好吧所以我讨厌回答我自己的问题,特别是那些没有得到选票,没有答案,也没有得到很少意见的问题,但是我得到了Flickr支持的答案,所以我想我也可以在这里发布.其他人发现此用途.
AuthCalcUrl返回一个URL,而不是实际的身份验证令牌.此外,更多的是桌面身份验证,而不是基于Web的身份验证.您链接到的论坛帖子正在谈论移动身份验证.
对于Web身份验证,您需要follow the flow detailed here:因此,您调用Flickr.AuthCalcWebUrl,然后将用户重定向到该URL.然后,当他们进行身份验证后,他们将被发送到您在API密钥设置中设置的回拨网址.此网址将包含一个frob.然后最后在回调网址页面中,您从查询字符串中获取frob并调用Flickr.AuthGetToken(frob);如果要查看此操作,请从示例页面下载示例ASP.Net网站.