1

状況: 私は Web サイトを持っていて、「投稿」を作成しています。新しい投稿が作成されたら、新しい投稿を Facebook ページのフィードに送信したいと考えています。これを行うためのすべてのコードがダウンしており、グラフ API エクスプローラー ツールからアクセス トークンを取得する限り、問題なく動作します。約 1 時間後に有効期限が切れるため、これは機能しません。コードからアクセス トークンを生成すると、それはアプリ アクセス トークンのように見え、自分のページにアクセスできません。したがって、大きな問題は、自分のページへの投稿にアクセスできるコードからユーザー アクセス トークンを取得する方法です。

アクセストークンを取得する方法は次のとおりです。

 private static string GetApiAccessToken()
    {
        var client = new FacebookClient();
        dynamic result = client.Get("oauth/access_token", new
        {
            client_id = SessionGetter.Instance.FacebookApiKey,
            client_secret = SessionGetter.Instance.FacebookSecretKey,
            grant_type = "client_credentials",
            scope = "manage_pages"
        });

        return result.access_token;
    }

次に、アクセス トークンを使用して Page アクセス トークンを取得しようとしましたが、ここで、承認がなく、辞書に返されるのは「id」だけであることがわかります。

private static string GetPageAccessToken(string accessToken, string pageId)
    {
        try
        {
            var fb = new FacebookClient(accessToken);

            var parameters = new Dictionary<string, object>();

            parameters["fields"] = "access_token";
            var result = (IDictionary<string, object>)fb.Get(pageId, parameters);

            var pageAccessToken = (string)result["access_token"];

            return pageAccessToken;
        }
        catch (FacebookApiException ex)
        {
        }
        return null;
    }   

先ほど言ったように、グラフ エクスプローラーからアクセス トークンを使用すると、コードは正常に動作します。次に、グラフ API にポストが行われます

 var facebookClient = new FacebookClient(pageAccessToken);
            var result = (IDictionary<string, object>)facebookClient.Post("me/feed", new Dictionary<string, object>
{{"message",postMessage},                                                                              {"picture", csLogo},
{"link", LinkHelper.AssignmentUrl(wrapper.Assignment)}});
4

1 に答える 1

0

ユーザー アクセス トークンにmanage_pages拡張アクセス許可があることを確認します。

me/accounts次に、ページ アクセス トークンを取得するように要求します。

次に、ページアクセス トークンを{pageid}/feed使用して投稿します。

于 2012-09-20T21:21:23.013 に答える