1

私たちのアプリでは、Facebook を新しい Facebook SDK バージョン 3.0 と統合しました。

Eclipse からテスト デバイスでアプリを起動すると、すべて正常に動作します。Facebook アプリ (ネイティブ アプリがインストールされていない場合は webView) が開き、Facebook にログインしてコールバックし、投稿を公開します。

しかし、このコードを google playstore で apk としてリリースし、そこからダウンロードしてテストすると、Facebook アプリが起動し、ユーザーがログインして公開を許可すると、何も起こらず、ウォール O_o に投稿されません。

コードは次のとおりです。

private void facebookLogin()
{

    Session.openActiveSession(this, true, new Session.StatusCallback() 
      {

        @Override
        public void call(Session session, SessionState state, Exception exception) 
        {
            // TODO Auto-generated method stub


            if(session.isOpened())
            {


                performPublish(PendingAction.POST_PHOTO);

            }
        }
    });
}

private void performPublish(PendingAction action) {
        Session session = Session.getActiveSession();
        if (session != null) {
            pendingAction = action;
            if (hasPublishPermission()) {
                // We can do the action right away.
                handlePendingAction();
            } else {
                // We need to get new permissions, then complete the action when we get called back.
                session.requestNewPublishPermissions(new Session.NewPermissionsRequest(this, PERMISSIONS));
            }
        }
    }
private void handlePendingAction() 
 {
        PendingAction previouslyPendingAction = pendingAction;
        // These actions may re-set pendingAction if they are still pending, but we assume they
        // will succeed.
        pendingAction = PendingAction.NONE;

        switch (previouslyPendingAction) 
        {
            case POST_PHOTO:
                postPhoto();
                break;
            case POST_STATUS_UPDATE:
                postStatusUpdate();
                break;
        }
 }
private void postPhoto() 
 {
        if (hasPublishPermission()) 
        {

            Bitmap logo = g.getLevelBitmaps()[0];
            Request request = Request.newUploadPhotoRequest(Session.getActiveSession(), logo, new Request.Callback() 
            {
                @Override
                public void onCompleted(Response response) 
                {
                    postStatusUpdate();
                    if(g.isAchievementsActivated())
                    {
                        Swarm.init(logoQuestion,3777,"831e03485c37444f9b94de8fdf2e676f");
                        SwarmAchievement.unlock(10093);
                    }
                    //Toast.makeText(logoQuestion, "Posted", Toast.LENGTH_SHORT).show();
                    performPublish(PendingAction.POST_STATUS_UPDATE);
                }
            });
            Bundle params = new Bundle();
            params.putString("description", "Who know's that logo? \n" + hintQuestionText+ " posted from Videogames Logoquiz now available for Android and iOS");
            //request.setParameters(params);
            request.executeAsync();

        } 
        else 
        {
            pendingAction = PendingAction.POST_PHOTO;
        }
 }

private void postStatusUpdate() 
 {
        if (hasPublishPermission()) 
        {
            String question = "Who know's that logo? "+hintQuestionText+" Get Videogames Logoquiz. It's now available for iOS and Android.";
            Request request = Request
                    .newStatusUpdateRequest(Session.getActiveSession(), question, new Request.Callback() 
                    {
                        @Override
                        public void onCompleted(Response response) 
                        {
                            Toast.makeText(logoQuestion, "Posted", Toast.LENGTH_SHORT).show();
                        }
                    });
            request.executeAsync();
        } 
        else 
        {
            pendingAction = PendingAction.POST_STATUS_UPDATE;
        }
 }

hasPublishPermission 関数:

private boolean hasPublishPermission() 
 {
        Session session = Session.getActiveSession();
        return session != null && session.getPermissions().contains("publish_actions");
 }

私が求めている権限は次のとおりです。

private static final List<String> PERMISSIONS = Arrays.asList("publish_actions","user_photos");

私の Android マニフェストには、facebook を統合するための次の権限があります。

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

テストでは動作するが、同じリリース バージョンでは動作しない理由がわかりません。

誰かが解決策を知っていますか?

皆さん、ありがとうございました!

4

0 に答える 0