簡體   English   中英

如何通過spring-social從Facebook獲取個人資料圖片網址?

[英]How to get profile image url from Facebook with spring-social?

我使用spring-social-facebook與Graph API進行交互(1.0.3.RELEASE,如果它是metter)。
我找不到任何操作來檢索配置文件的圖像網址。 我發現只有返回字節數組的操作,它們對於實現來說不是很方便。
Spring Social中是否存在檢索圖像URL的任何操作?
如果沒有,這有什么“整潔”的解決方法嗎?
謝謝!

最后,我沒有在春季社交中找到任何關於個人資料圖片網址的提及
我的解決方案
最初我計划擴展UserOperationsFacebokTemplate.userOperations )類並添加新方法。 但它是一個包級別的類,在外面看不到。
所以我決定創建自己的擴展FacebookTemplate的模板類,並以這種方式實現該方法:

public String fetchPictureUrl(String userId, ImageType imageType) {
    URI uri = URIBuilder.fromUri(GRAPH_API_URL + userId + "/picture" +
            "?type=" + imageType.toString().toLowerCase() + "&redirect=false").build();

    JsonNode response = getRestTemplate().getForObject(uri, JsonNode.class);
    return response.get("data").get("url").getTextValue();
}

我剛遇到同樣的問題,希望這會幫助別人

Connection<Facebook> connection = userConnectionRepository.findPrimaryConnection(Facebook.class);
connection.createData().getImageUrl()

你可以用這種方式拍攝微縮圖片:

"http://graph.facebook.com/" + fbUser.getId() + "/picture?type=square"

在社交API中,您只能獲取圖像二進制文件:

byte[] profileImage = facebook.userOperations().getUserProfileImage(imageType);

要獲取URL,您需要自定義內容(如上面的帖子中所述)。 我從Facebook Social API(參見fachImage的Facebook模板源代碼)和以下實用程序類中獲取了部分代碼:

public final class FacebookUtils {

    private static final String PICTURE_PATH = "picture";

    private static final String TYPE_PARAMETER = "type";

    private static final String WIDTH_PARAMETER = "width";

    private static final String HEIGHT_PARAMETER = "height";

    private FacebookUtils() {
    }

    public static String getUserProfileImageUrl(Facebook facebook, String userId, String width, String height, ImageType imageType) {
        URIBuilder uriBuilder = URIBuilder.fromUri(facebook.getBaseGraphApiUrl() + userId + StringUtils.SLASH_CHARACTER + PICTURE_PATH);
        if (imageType != null) {
            uriBuilder.queryParam(TYPE_PARAMETER, imageType.toString().toLowerCase());
        }
        if (width != null) {
            uriBuilder.queryParam(WIDTH_PARAMETER, width.toString());
        }
        if (height != null) {
            uriBuilder.queryParam(HEIGHT_PARAMETER, height.toString());
        }
        URI uri = uriBuilder.build();
        return uri.toString();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM