1

我对使用 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
        }

我不知道该怎么做。如果你们中的任何人可以指导我完成一点,那就太好了!谢谢!}

4

2 回答 2

2

查看来自 Facebook 的工作示例

如果您纯粹使用 javascript 构建应用程序,您将只使用您的client_id. client_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>
于 2012-06-16T22:00:54.773 回答
0

不要将您的应用程序机密放在客户端代码中——它被称为机密是有原因的!

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

您是否使用任何 SDK?查看用于客户端登录的 JavaScript SDK,或者如果您正在使用 PHP 并希望进行服务器端登录,请查看 PHP SDK。这些 SDK 可帮助您完成 OAuth 登录等操作,并使您无需掌握最基本的东西,因此您可以专注于应用功能……</p>

于 2012-06-16T13:47:06.933 回答