2013-07-24 6 views
0

Facebook의 공식 Android SDK를 사용하고 있으며 Facebook의 앱 관리자입니다.Facebook 로그인에 액세스 할 수 없습니까?

기본적으로 앱은 샌드 박스 모드이며 관리자와 개발자를 제외한 모든 사용자가 액세스 할 수 있습니다. 내 안드로이드 애플 리케이션에 페이스 북의 로그인 기능을 추가하는 데 사용하고 있습니다. 그러나 개발자로서 나와 함께 앱을 개발하고있는 친구를 추가했지만 앱의 계정 자격 증명으로 Facebook을 통해 로그인 할 수 없습니다. Facebook의 앱 설정에서 앱용 샌드 박스 모드를 사용 중지했지만 여전히 로그인 기능에 액세스 할 수 없습니다. Facebook 로그인 버튼을 클릭하면 아무런 일도 일어나지 않고 동일한 활동으로 리디렉션됩니다. 반면에 제 경우에는 성공적으로 로그인하고 앱이 정상적으로 진행됩니다.

내가 공개하기 위해해야 ​​할 추가 설정이 있습니까?

감사합니다 :)

+0

페이스 북의 응용 프로그램에서 딥 링크 및 페이스 북 로그인을 활성화 했습니까? –

+0

그리고 같은 시스템에서 설치되었거나 다른 앱이 설치되어 있습니까? –

+0

실제로, 정확한 단어로 입력 할 수 없습니다. developers.facebook.com에 새 앱을 등록했으며 새로 만든 앱의 app-id를 내 안드로이드 앱 코드에 사용하고 있습니다. 내 안드로이드 애플 리케이션에서 페이 스북 로그인 시설을 사용하고 싶습니다 ... – tigerden

답변

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

      // callback when session changes state 
      @Override 
      public void call(Session session, SessionState state, 
        Exception exception) { 
       if (session.isOpened()) { 
        // make request to the /me API 

        List<String> permissions = session.getPermissions(); 
        if (!isSubsetOf(PERMISSIONS, permissions)) { 
         pendingPublishReauthorization = true; 
         Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
           RegisterActivity.this, PERMISSIONS); 
         session.requestNewReadPermissions(newPermissionsRequest); 
         return; 
        } 
        Request.executeMeRequestAsync(session, 
          new Request.GraphUserCallback() { 

         // callback after Graph API response with 
         // user object 
         @Override 
         public void onCompleted(GraphUser user, 
           Response response) { 
          if (user == null) { 
           Toast.makeText(
             RegisterActivity.this 
             .getApplicationContext(), 
             "Facebook Error", 
             Toast.LENGTH_LONG).show(); 

          } else { 
           Toast.makeText(
             RegisterActivity.this 
             .getApplicationContext(), 
             user.getName() 
             + " Logged in Successfully.", 
             Toast.LENGTH_LONG).show(); 
           GraphUser abc = user; 

           id = user.getId(); 
           name = user.getName(); 
           gender = user.getProperty("gender") 
             .toString(); 
           editname.setText(name); 
           username.setText(user.getUsername()); 
           JSONObject jo = user 
             .getInnerJSONObject(); 
           Log.d("Details", jo.toString()); 
           try { 
            emailid.setText(user 
              .getProperty("email") 
              .toString()); 
           } catch (Exception e1) { 
            // TODO Auto-generated catch 
            // block 
            e1.printStackTrace(); 
           } 

           try { 
            location = user.getLocation() 
              .getProperty("name") 
              .toString(); 
           } catch (Exception e) { 

            e.printStackTrace(); 
           } 



          } 

          return; 
         } 

        }); 

       } 
      } 
     }); 

onActivityResult를 방법

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, 
      resultCode, data); 
} 

isSubsetoff() 방법

private boolean isSubsetOf(Collection<String> subset, 
     Collection<String> superset) { 
    for (String string : subset) { 
     if (!superset.contains(string)) { 
      return false; 
     } 
    } 
    return true; 
} 

권한을 넣어 귀하의 필요에 따라

private static final List<String> PERMISSIONS = Arrays.asList("email", 
     "user_about_me", "user_location", "user_checkins"); 
관련 문제