facebook oauth,没有基本权限的图片

时间:2012-07-31 21:01:26

标签: facebook oauth

我正在使用oauth将facebook用户登录到我的应用程序。我正在使用我的FB帐户和基本权限范围进行测试。 Facebook文档说我应该能够获得具有基本权限的“图片”,但是当我使用API​​访问它时,我的帐户没有“图片”属性。虽然有名字,姓氏等。

这是因为我的帐户无法公开查看吗?为什么会这样?我绝对有附图。

这是我的fb链接:http://www.facebook.com/josh.nankin

4 个答案:

答案 0 :(得分:7)

您可以直接从Facebook返回的基本标准OAuth信息中获取个人资料照片网址,如Josh Nankin所说,但澄清。

您仍然可以使用返回的用户ID来请求照片,例如:

https://graph.facebook.com/914431778578699/picture?type=large

相同

https://graph.facebook.com/dark.eye.1/picture?type=large

这样只需要一个请求,因为您可以在将照片URL存储到数据库中时对其进行插值。

答案 1 :(得分:5)

https://developers.facebook.com/docs/reference/api/user/

  

“图片:用户个人资料图片的网址(仅在您明确指定'fields = picture'param 时才会返回)”

您可能不会忽略以粗体标记的部分......?

答案 2 :(得分:4)

所以,当你点击API上的/ me路径时,仍然不确定为什么图形api不会返回图片属性,但是一旦你拥有来自/ me的用户名,你就可以很容易地得到图片:

https://graph.facebook.com/USERNAME/picture

答案 3 :(得分:2)

实际上,您无需允许公共访问即可获取个人资料图片,因为您可以获得USER_ID。虽然USER_ID可以轻松导航到个人资料图片。

<?php

    $sql = "SELECT id FROM candyshop WHERE candy <= 5 AND sugartype ='hard'";
    $count = 0;
    $retry = 5;

    do {

        // Count the rows
        if ($result = mysqli_query($con, $sql)) {
            $count = mysqli_num_rows($result);
        }

        // Wait for 10ms
        if ($count === 0) {
            usleep(10000)
        }

    } while ($count === 0 && --$retry > 0);

    mysqli_close($con);

您可以将变量linkpp中的类型更改为 type = small ,它会返回低分辨率图像。

function checkLoginState() {
    FB.getLoginStatus(function(response) {
        statusChangeCallback(response);
        console.log('Welcome!  Fetching your information.... ');
        var url = '/me?fields=id,name';
        FB.api(url, function(response) {
             var linkpp = 'https://graph.facebook.com/' + response.id + '/picture?type=large';
             document.getElementById("id_of_link_tag").href = linkpp;
        });
    });
}