如何跳过Facebook应用程序权限对话框

时间:2013-12-23 05:42:43

标签: asp.net facebook c#-4.0 facebook-c#-sdk

在这里,我试图通过登录验证用户,之后我想跳过权限对话框。但我无法实现这一点,因为它总是向用户请求应用程序的权限。我的意图是如果用户没有登录到Facebook,他/她应该被提示进行Facebook登录,然后我将使用方法Get(“/ me”)获取公共信息。让我知道我在这里做错了什么。

public string GetFBAccessToken(string strAppID, string strAppSecret, string strUrl)
{
   // Declaring facebook client type
   var vFB = new FacebookClient();
   string strAccessTok = string.Empty;
   try
   {
     if (!string.IsNullOrEmpty(strAppID) && !string.IsNullOrEmpty(strAppSecret) && !string.IsNullOrEmpty(strUrl))
       {
         // Getting login url for facebook
            var loginUrl = vFB.GetLoginUrl(new
                           {
                             client_id = strAppID,
                             client_secret = strAppSecret,
                             redirect_uri = strUrl,
                             response_type = "code",
                             state = "returnUrl",
                             //scope = "",
                             display = "popup"
                           });

         // Redirecting the page to login url
         if (HttpContext.Current.Request.QueryString["code"] == null)
         {
            HttpContext.Current.Response.Redirect(loginUrl.AbsoluteUri);
         }                    

         // Fetching the access token from query string
         if (HttpContext.Current.Request.QueryString["code"] != null)
         {
            dynamic result = vFB.Post("oauth/access_token", new
                             {
                               client_id = strAppID,
                               client_secret = strAppSecret,
                               redirect_uri = strUrl,
                               code = HttpContext.Current.Request.QueryString["code"]
                             });
         // Getting access token and storing in a variable
         strAccessTok = result.access_token;
          }
         }
         return strAccessTok;
  } 
  catch (Exception ex)
  {
     //if (HttpContext.Current.Request.QueryString["response_type"] == "code")
     //{
     // var fb = new FacebookClient();
     // var details = fb.Get("/me");
     //}

     return strAccessTok;
  }
}

2 个答案:

答案 0 :(得分:0)

无论您使用的平台/语言如何;解决方案可以如下。

  1. 检查使用的登录状态。 https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/
  2. 根据响应状态,强制调用您的操作(即,如果用户已连接,则登录,获取权限或任何其他操作)。登录时请查看FB中的参考文档。 https://developers.facebook.com/docs/facebook-login/login-flow-for-web/

答案 1 :(得分:0)

没有。您无法跳过登录对话框。

事实上,APP所有者与您的用户建立信任关系非常重要。我建议您在使用APP验证用户身份时关注Login Best Practices