2

たぶん、あなたは私に何かを手伝ってくれるでしょう。Spring Social を使用して、Facebook ページで公開されているすべての投稿を取得したいと考えています。

誰かの名前で投稿したり、コメントしたりしたくないので、特定のユーザーまたは何かとの OAuth 認証は必要ありません。

それでも、Facebook はリクエストを行うときにアクセス トークンを渡す必要があります。そのため、すべての公開投稿を取得するために次のことを行っています。

ここで私の質問は次のとおりです。これを行うためのより簡単で簡潔な方法はありますか、それとも Spring Social は完全なユーザー認証 OAuth ダンスのみをサポートし、この単純な方法はサポートしていませんか?

public List<Post> fetchFacebookPosts() {

    String accessTokenUrlString = String.format("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=%s&client_secret=%s&redirect_url=%s", getFacebookAppId(), getFacebookAppSecret(), "http://www.return.url");

    String token = "";

    try {
        // HTTPURLConnection stuff omitted
        // returns: accessToken=xxxx|xxxxxxxxxxxxx

        token = response.toString().substring(response.toString().indexOf("=")+1);

    } catch (IOException e) {
        // ...
    }

    FacebookTemplate facebookTemplate = new FacebookTemplate(token);
    return facebookTemplate.feedOperations().getFeed("12345678");
}
4

3 に答える 3

2

App Access TokenFacebook ページのフィードを取得するために、ユーザー ログイン/承認なしで、最も基本的なアクセス トークンを使用することもできます。

String appAccessToken = APP-ID + '|' + APP_SECRET;

これらの記事で、さまざまなアクセス トークンの詳細をお読みください。

于 2014-07-30T17:50:27.353 に答える
1

OAuth 2 認証コードの付与 (完全なユーザー認証トークン フロー) に加えて、Spring Social の OAuth2Template は、パスワードの付与とクライアント資格情報の付与もサポートします。

パスワードの付与では、ユーザーの資格情報を取得する必要がありますが、OAuth フロー全体で資格情報を取得する必要はありません。一般に、パスワード許可は、リダイレクト フローが厄介または不可能なネイティブ アプリケーションにのみ使用することをお勧めします。それでも、Facebook (私の知る限り) はパスワード付与をサポートしていないため、そのオプションは検討されていません。

Facebook、OAuth2Template の authenticateClient() メソッドによるクライアント資格情報の付与をサポートしています。このシナリオでは、(Facebook から提供された) アプリケーションの資格情報をアクセス トークンと交換します。ただし、取得するトークンは、ユーザー中心ではないリクエストにのみ使用するように制限されていることに注意してください。

一般に、Facebook の API のほとんどはユーザー トークンを必要とします...完全な承認フローを介して取得する必要があります。これは Spring Social の制限ではありません... Facebook によって制定された厳格なセキュリティ制限です。

于 2014-07-30T17:41:04.220 に答える
0

その場合、ドキュメント [1] はかなり明確です。access_token が必要です。access_token を要求することは、それがコンテンツの投稿にのみ使用されることを意味するものではありません。これは Facebook の要件であり、Spring Social でできることはあまりありません。

[1] https://developers.facebook.com/docs/graph-api/reference/v2.0/page/feed/

于 2014-07-30T15:35:35.413 に答える