0

我正在研究 Asp.Net MVC。我正在尝试使用 Facebook Graph API 将 Facebook 与我的 Web 应用程序集成。我正在使用 OAuth 机制从 facebook 中提取数据。第一步,我将端点称为,

https://www.facebook.com/dialog/oauth?client_id={app_id}&redirect_uri={redirect_uri}&scope=email,read_stream,publish_stream,read_friendlists");

public profile Info, email,etc.这意味着,用户被重定向到 facebook 登录页面,他输入了他的凭据,在确认有效凭据后,它会像第一个对话框一样请求权限。在第二个对话框中,它询问post on your wall behalf of you用户是否为所有权限选择确定,他将被重定向回使用授权代码重定向 uri。我使用此端点获取访问令牌,例如,

https://graph.facebook.com/oauth/access_token?client_id={appid}&redirect_uri={redirect_uri}&client_secret={appsecret}&code={authorization code}

我还扩展了这个短暂的访问令牌,例如

 https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id={appid}&redirect_uri={redirect_uri}&client_secret={appsecret}&fb_exchange_token={accesstoken above}

我得到了访问令牌并将其保存到我的数据库中。

我只是在使用 Graph API Explorer 之前检查他选择的用户的权限,我得到了类似的响应,

"installed": 1, 
"basic_info": 1, 
"email": 1, 
"user_likes": 1, 
"user_photos": 1, 
"user_notes": 1, 
"user_subscriptions": 1,
"publish_stream":1,
"read_stream":1,
"read_friendlists":1

好的,到目前为止一切正常。现在我从 facebook 网站注销并决定通过我的应用重新登录。登录 facebook 后,它不允许我重定向到我的网站,它总是卡在那个 facebook 登录页面,我观察到它末尾的地址栏 url 说用户被拒绝和错误代码 200。我检查了权限用户使用图形 api 资源管理器,我得到了类似的响应,

"installed": 1, 
"basic_info": 1, 
"email": 1, 
"user_likes": 1, 
"user_photos": 1, 
"user_notes": 1, 
"user_subscriptions": 1

在这里,我发现我失去了扩展权限,publish_stream,read_stream这就是它不允许我访问我的网站的原因。但是,如果已经登录 facebook 网站并访问我的网站,我就可以访问用户个人资料、时间线等,而不会出现任何错误。而且,如果我auth_type=reauthenticate与范围一起添加它会成功,但是它会要求用户登录大约 2 次,这不是我的要求。为什么第二次登录会丢失扩展权限。如果我在我的过程中出错了,请指导我。谢谢你。

4

0 回答 0