마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

페이스북 publish_actions 권한 문제

0 추천
 private static final List<String> PERMISSIONS = Arrays.asList("publish_actions");
 private boolean pendingPublishReauthorization = false;
 private boolean isSubsetOf(Collection<String> subset, Collection<String> superset) {
     for (String string : subset) {
         if (!superset.contains(string)) {
             return false;
         }
     }
     return true;
 } 
 private void publishStory(final String msg) {
  runOnUiThread(new Runnable() {
   
   @Override
   public void run() {
       Session session = Session.getActiveSession();
  
       if (session != null){
  
           // Check for publish permissions    
           List<String> permissions = session.getPermissions();
           if (!isSubsetOf(PERMISSIONS, permissions)) {
               pendingPublishReauthorization = true;
               Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(FlushFlush.this, PERMISSIONS);
               session.requestNewPublishPermissions(newPermissionsRequest);
               Log.i("Request Permission", "cal permission");
               return;
           }
  
           Bundle postParams = new Bundle();
           postParams.putString("name", "Ninja Game Record");
           postParams.putString("message", msg);
  
           Request.Callback callback= new Request.Callback() {
               public void onCompleted(Response response) {
                Log.i("RESPONSE", response.toString());
                   FacebookRequestError error = response.getError();
                   if (error != null) {
                       Toast.makeText(act
                            .getApplicationContext(),
                            error.getErrorMessage(),
                            Toast.LENGTH_SHORT).show();
                      } else {
                    JSONObject graphResponse = response
                                        .getGraphObject()
                                        .getInnerJSONObject();
                  String postId = null;
                  try {
                      postId = graphResponse.getString("id");
                            Toast.makeText(act
                                  .getApplicationContext(), 
                                  postId,
                                  Toast.LENGTH_LONG).show();
                  } catch (JSONException e) {
                      Log.i("TAG","JSON error "+ e.getMessage());
                  }
                      }
               }
           };
  
           Request request = new Request(session, "me/feed", postParams, 
                                 HttpMethod.POST, callback);
  
           request.executeAsync();
       }
   }
  });

 }

안녕하세요.

현재 페이스북 연동 앱을 개발 중입니다.

publish_actions로 권한을 받아오고 me/feed를 통해 담벼락에 게임 기록을 게시하는 앱인데, 페이스북 개발자로 등록된 계정 A로 앱에 로그인해서 게시하면 잘 됩니다.

그런데 동일 앱에서 일반 페이스북 계정인 B로 로그인해서 시도하면 게시가 되지 않습니다.

디버깅을 해 보니 publish_actions 요청하는 부분에서 이 권한을 확보해오지 못하더군요..

위 소스의 requestNewPublishPermission 부분에서 계속 걸립니다.

A계정으로는 잘 되니 코드는 맞지 않을까 싶은데 해결 방법을 알 수 없어 고생중입니다. 도움을 부탁드립니다.

읽어주셔서 감사합니다.

펭귄대왕 (540 포인트) 님이 2014년 8월 30일 질문

1개의 답변

+1 추천
 
채택된 답변

publish_actions 혹시 승인은 받으셨나요? 

익명사용자 님이 2014년 8월 30일 답변
펭귄대왕님이 2014년 9월 1일 채택됨
답변 감사합니다.
현재 앱 내에서 권한을 요청하는 부분 외에 페이스북 개발자 페이지의 Status & Review 에서 Items에 publish_actions를 추가했고 (Sumit for Review는 아직 진행하지 않았습니다) 혹시나 싶어 Graph API exploere -> Get Accecc Token -> Extended permiisons에서 publish_actions에 체크하고 있습니다.
혹시 Submit for Review를 진행해야 하는 것인지, 아니면 다른 승인 절차가 있을까요?
말쓸하신 것처럼 승인 절차 받아야 됩니다... publish_actions 추가 하고 각 항목 다 기술하고 Sumit for Review 해야 됩니다..내용을 그쪽에서 만족하게 잘 쓰섰다면 2일~ 3일 내에 승인 완료됩니다.
감사합니다. 큰 도움이 되었습니다.
...