无法使用Oauth2.0在Facebook上登录

时间:2012-06-16 13:27:58

标签: facebook oauth facebook-oauth facebook-authentication

我是关于使用facebook登录的整个系统的新手。我刚刚通过facebook了解了OAuth2.0系统,我确实理解它是如何工作的,但是我无法理解如何使它与我的应用程序一起工作并获取访问令牌,然后从图形api获取信息。

    <a href="https://graph.facebook.com/oauth/access_token?client_id=241467205957761&redirect_uri=https://apps.facebook.com/optionsminer&client_secret=17b3847f0d32667eb75ac3270fcbdbe7">asdasda</a>

例如,如果我有这个,它似乎没有工作,它给我json的错误

        {
        "error": {
       "message": "Error validating client secret.",
        "type": "OAuthException",
        "code": 1
        }

我不确定如何进一步处理这件事。如果你们中的任何人能引导我一点点,那就太好了! 谢谢! }

2 个答案:

答案 0 :(得分:2)

查看working examples from Facebook

如果您仅使用javascript构建应用,则只会使用client_idclient_secret用于从服务器端代码(例如Rails或PHP应用程序)请求令牌。

<html> 
  <head> 
    <title>Client-side OAuth Example</title> 
  </head> 
<body> 
<script> 
  function displayUser(user) {
    var userName = document.getElementById('userName');
    var greetingText = document.createTextNode('Greetings, ' + user.name + '.');
    userName.appendChild(greetingText);
  }

  var appID = YOUR_APP_ID;
  if (window.location.hash.length == 0) {
    var path = 'https://www.facebook.com/dialog/oauth?';
    var queryParams = ['client_id=' + appID,
                       'redirect_uri=' + window.location,
                       'response_type=token'];
    var query = queryParams.join('&');
    var url = path + query;
    window.open(url);
  } else {
    var accessToken = window.location.hash.substring(1);
    var path = "https://graph.facebook.com/me?";
    var queryParams = [accessToken, 'callback=displayUser'];
    var query = queryParams.join('&');
    var url = path + query;

    // use jsonp to call the graph
    var script = document.createElement('script');
    script.src = url;
    document.body.appendChild(script);        
 }
</script> 
<p id="userName"></p> 
</body> 
</html>

答案 1 :(得分:0)

不要将您的应用秘密放在客户端代码中 - 出于某种原因,它被称为秘密

(如果这是您发布的代码中的真实的应用ID和秘密,您应该立即获得新的秘密!)

您使用的是任何SDK吗?查看用于客户端登录的JavaScript SDK,或者如果您正在使用PHP并希望进行服务器端登录,请查看PHP SDK。这些SDK可以帮助您完成OAuth登录等操作并保留最基本的东西,因此您可以专注于应用程序功能...