【问题标题】:Facebook API to get access tokenFacebook API 获取访问令牌
【发布时间】:2012-01-02 23:43:51
【问题描述】:

我有一个要求,我想仅通过 API 使用 Facebook 访问令牌。
我见过使用 Web 请求和响应来获取 Facebook API 的方法,它们还使用重定向 URI。

但我不能真正使用重定向 URI,因为我想在 azure worker 角色中使用它。

类似:

facebook a=new facebook();
a.appid="";

这只是一个可视化,但任何帮助都会很棒。

编辑:

以下答案有帮助。 如果我在浏览器中使用以下 uri https://graph.facebook.com/oauth/access_token?client_id=app_Id&client_secret=secret_key&grant_type=client_credentials

它显示 access_token=### 但如果使用以下代码在 .net 中执行相同操作 字符串 url = "https://graph.facebook.com/oauth/access_token?client_id=app_id &client_secret=secretKey &grant_type=client_credentials";

string token;
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();

它抛出未经授权的

【问题讨论】:

  • 请尽量使用正确的标点符号——这样可以使问题更容易理解。
  • 您到底想知道什么?我想获得访问令牌并以 azure worker 角色发布到 fb 粉丝页面。我无法使用正常的请求响应模型来获取访问令牌,因为它需要重定向 uri,而我的要求不存在。
  • 出于显而易见的原因,有时您的用户必须接受您的应用。
  • 我想作为批处理调度的一部分发布,因此只有管理员可以在特定时间间隔发布到墙上。

标签: c# facebook-c#-sdk


【解决方案1】:

如果 C# API 没有为它提供方法,你可以自己做。访问令牌是以下 url 的内容。你只需要发出 https 请求。

https://graph.facebook.com/oauth/access_token?client_id=<APP_ID>&client_secret=<APP_SECRET>&grant_type=client_credentials

好的,下面是 PHP 代码:

function getAccessToken(){
    $token_url = 'https://graph.facebook.com/oauth/access_token?client_id='.APP_ID.'&client_secret='.APP_SECRET.'&grant_type=client_credentials';
    return makeRequest($token_url);
}

function makeRequest( $url, $timeout = 5 ) {
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_USERAGENT, "PHP_APP" );
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_ENCODING, "" );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );    # required for https urls
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
    $content = curl_exec( $ch );
    $response = curl_getinfo( $ch );
    curl_close ( $ch );

    if($response['http_code'] == 200) return $content;
    return FALSE;
}

【讨论】:

  • 这个方法需要创建 url 并重定向它然后登录到 facebook 然后你得到访问令牌.. 我不能这样做。
  • 它不需要登录 facebook,也不需要重定向。我使用 CURL 从 PHP 成功使用它
  • 它给了我未经授权。我从你的代码中假设,client_Id 是应用程序 ID,客户端密码是 fb 应用程序的密钥。
  • client_id 是名称 o 参数。您只需要设置您的APP_ID 和您的APP_SECRET。您可以通过在developers.facebook.com/apps 上创建一个 Facebook 应用程序来获取这些信息
  • 任何想法,如果我想发布到我是管理员的特定粉丝页面。我需要在 url 中添加额外的参数吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
相关资源
最近更新 更多