2

我试图弄清楚当用户在 oauth 流程期间关闭或单击 Facebook 权限窗口上的取消按钮时,是否有任何方法可以通知父页面。它是用户授权应用程序的窗口。带有 url 的窗口:https ://www.facebook.com/dialog/oauth?api_key= ..... 并带有“使用 Facebook 登录”和“取消”按钮。我想要完成的是——如果用户取消或关闭 oauth 权限窗口,我想打开 Facebook 简单共享窗口,他们可以在不授权应用程序的情况下发布状态。

我正在为 Facebook 连接使用 JS SDK。

4

2 回答 2

3

此代码取自FB.login 方法的文档

FB.login(function(response) {
   if (response.authResponse) {
     console.log('Welcome!  Fetching your information.... ');
     FB.api('/me', function(response) {
       console.log('Good to see you, ' + response.name + '.');
     });
   } else {
     console.log('User cancelled login or did not fully authorize.');
   }
 });

如您所见,该if (response.authResponse)部分检查登录过程是否成功完成,即用户允许该应用程序并且他已登录到 facebook。

如果用户单击“取消”或关闭弹出窗口,则响应中将没有authResponse参数。

于 2012-06-26T17:48:30.430 回答
2

当用户取消授权时观察 url oauth url 更改,它现在将包含描述用户操作的字段数

YOUR_REDIRECT_URI?
    error_reason=user_denied
   &error=access_denied
   &error_description=The+user+denied+your+request.
   &state=YOUR_STATE_VALUE

这将是用户取消身份验证后的值

error_reason=user_denied
&error=access_denied
&error_description=The user denied your request

用户取消后,身份验证对话框页面将被重定向到父页面,您可以在其中检查这些错误参数。

于 2012-06-26T07:37:17.567 回答