0

AndroidでFacebook SDKを扱おうとしています。今のところ、ユーザーのフィード (me/feed) への投稿は完了しており、正常に動作しています。ユーザー認証後、私のアプリケーションは manage_pages パーミッションを受け取り、管理者権限を持つグループを保存するようユーザーに提案します。

private void requestPermissions() {
    List<String> permissions = session.getPermissions();
    final List<String> PERMISSIONS = Arrays.asList("publish_actions",
            "manage_pages");
    if (!isSubsetOf(PERMISSIONS, permissions)) {
        Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
                myActivity, PERMISSIONS);
        session.requestNewPublishPermissions(newPermissionsRequest);
    }
};

後でユーザーは投稿するグループを選択できます。その後、アプリケーションはページ アクセス トークンを取得するリクエストを行い、投稿を開始します。

private void postToGroup() {
    if (session != null) {
        Log.d("FB", "groupToken request!");
        Request myreq = Request.newGraphPathRequest(session, "me/accounts",
                new Request.Callback() {

                    @Override
                    public void onCompleted(Response response) {
                        Log.d("FB", "received token");
                        GraphObject obj = response.getGraphObject();
                        JSONObject json = obj.getInnerJSONObject();
                        try {
                            String token = null;
                            JSONArray data = json.getJSONArray("data");
                            Log.d("FB", frag.getAcc().getLogin());
                            for (int i = 0; i < data.length(); i++) {
                                JSONObject acc = (JSONObject) data.get(i);
                                Log.d("FB", acc.getString("id"));
                                if (acc.getString("id").equals(
                                        frag.getAcc().getLogin())) {
                                    Log.d("FB",
                                            "token finded! "
                                                    + acc.getString("access_token"));
                                    token = acc.getString("access_token");
                                }
                            }
                            Log.d("FB", token);
                            executeRequest(token);
                        } catch (JSONException e) {
                            e.printStackTrace();

                        }

                    }

                });
        myreq.executeAsync();
    } else {
        Log.d("FB", "Session is closed");
    }
}

executeRequest メソッドは次のとおりです。

private void executeRequest(String token) {

        postParams = new Bundle();
        postParams.putString("name", postTitle);
        postParams.putString("message", frag.getContent());
        postParams.putString("access_token", token);
        request = new Request(session, frag.getAcc()
                .getLogin() + "/feed", postParams, HttpMethod.POST,
                callback);

    Log.d("FB", "Executing post request");
    request.executeAsync();
}

そしてそれに対するコールバック:

private Request.Callback callback = new Request.Callback() {
    public void onCompleted(Response response) {
        Log.d("FB", "get response!");
        FacebookRequestError error = response.getError();
        if (error == null) {
            JSONObject graphResponse = response.getGraphObject()
                    .getInnerJSONObject();
            String postId = null;
            try {
                postId = graphResponse.getString("id");
                Log.d("FB", postId);
            } catch (JSONException e) {
                Log.d("FB error", "JSON error " + e.getMessage());
            }

        } else {
            Log.d("FB error", error.getErrorMessage()); //HERE I'M RECEIVING AN ERROR
        }
    }

};

そして、投稿を試みた後、「ユーザーはアプリケーションがこのアクションを実行することを承認していません」というエラーが表示されます。この場合、正しいリクエストに対処するのを手伝ってください。または、生のGraph curlリクエストを作成する必要がありますか? これで約2週間頭をかきむしっていますが、見つかった情報は「ページアクセストークンを使用する必要があります」だけです。しかし、それを正しく使用する方法は?ありがとう。

4

1 に答える 1

0

そのために残念。いつものように、ここに投稿した後、実際に答えが見つかります...ここで述べたように、セッションに許可「status_update」を追加してトリックを行いました:

Facebookページに投稿すると「ユーザーはアプリケーションを承認していません」と表示されるのはなぜですか

ただし、これを要求することに関する情報は見つかりませんでした。また、ユーザーのフィードへの投稿は、この許可なしで成功しました。これが誰かを助けることを願っています!

于 2013-09-10T10:53:12.333 に答える