2012-11-07 3 views
4

공식 sdk 베타 3.0을 사용하는 Android 용 간단한 Facebook 앱을 개발 중입니다.android sdk 3.0 beta로 페이스 북의 추가 권한을 얻는 방법?

나는 사실, 나는 방법

에 추가 권한을 얻고, (여기 https://developers.facebook.com/docs/howtos/androidsdk/3.0/login-with-facebook/ 설명대로) LoginButton를 사용하지 않고 (user_likes, user_interests, friends_likes 등) 로그인 사용자에 대한 추가 권한을 얻을에 대한 것
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     List<String> permission=new ArrayList<String>(); 
     permission.add("user_birthday"); 
     permission.add("user_likes"); 
     permission.add("user_questions"); 
     permission.add("user_interests"); 
     permission.add("user_relationships"); 
     permission.add("user_groups"); 
     permission.add("user_religion_politics"); 
     permission.add("friends_birthday"); 
     permission.add("friends_interests"); 
     permission.add("friends_likes"); 
     permission.add("friends_groups"); 
     permission.add("friends_questions"); 
     permission.add("friends_relationships"); 
     // this.openSession(); 
      this.openSessionForRead(app_id, permission); 

    } 

실제로 실제로 로그인보기를 열어 추가 사용 권한을 요청합니다.

이제는 user.get * *()을 호출 할 때 기본 정보를 제외한 다른 방법을 표시하지 않기 때문에 추가 권한을 얻는 방법을 알았습니다.

감사합니다.


나는

개인 GraphObject 뮤저를 사용하여 Null.pointer.exception 받고 있어요; ... // 사용자 객체를 에 할당하면 사용자 정보를 얻기 위해 호출합니다.

String religion = mUser.getProperty ("religion"). toString(); 여기

내 로그 캣 : 생일 :

11-08 14:21:47.908: E/AndroidRuntime(1306): FATAL EXCEPTION: main 
11-08 14:21:47.908: E/AndroidRuntime(1306): java.lang.NullPointerException 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at com.********.*****.Main$1.onCompleted(Main.java:123) 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at com.facebook.Request$1.onCompleted(Request.java:248) 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at com.facebook.Request$4.run(Request.java:1197) 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at android.os.Handler.handleCallback(Handler.java:615) 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at android.os.Handler.dispatchMessage(Handler.java:92) 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at android.os.Looper.loop(Looper.java:137) 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at java.lang.reflect.Method.invoke(Method.java:511) 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
11-08 14:21:47.908: E/AndroidRuntime(1306):  at dalvik.system.NativeStart.main(Native Method) 

답변

0

GraphUser 만하면 전, 당겨 읽을 수있는 일반적인 속성의 제한된 집합이 있습니다. 종교와 같은 다른 말을 읽으려면 다음을 할 수 있습니다.

private GraphObject mUser; 
... 
// Assign the user object you get from a call to get the user's info 

String religion = mUser.getProperty("religion").toString(); 

잘하면이 질문에 대한 답변입니다.

0

mUser가 null이 아닌지 확인하십시오.

0

여기는 Graph api explorer에 대한 링크입니다. 올바른 애플리케이션을 선택하고 액세스 토큰 생성을 클릭하면됩니다. 팝업 대화 상자에서 선호 권한을 설정할 수 있습니다.

당신이라는 원래의 예에서 볼 수 있듯이 "SessionLoginSample"- 당신이 토큰을받은 후, 당신은 JSON 파일이 모든 정보와 응답이다 "https://graph.facebook.com/me?access_token=insert_your_real_token&format=json"

그건에서 사용할 수 JSON 파일 구조를 호출 할 수 있습니다 사용자의 개인 설정으로 인해 사용할 수 있습니다.

도와줬으면합니다.

5

세션을 만든 후에 추가 권한을 가질 수 있습니다. 세션을 닫지 않고

Session.NewPermissionsRequest newPermissionsRequest = new Session 
        .NewPermissionsRequest(this, Arrays.asList("user_groups")); 

      session.requestNewReadPermissions(newPermissionsRequest); 
3

com.facebook.Session에 메소드를 추가하십시오.페이스 북 안드로이드 SDK 프로젝트 내에서 자바 클래스 : 사용자 코드에서

public static Session openActiveSession(Activity activity, boolean allowLoginUI, StatusCallback callback, List permissions) { 
    return openActiveSession(activity, allowLoginUI, new OpenRequest(activity).setCallback(callback).setPermissions(permissions)); 
}

당신은 직접

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

    // callback when session changes state 
    @Override 
    public void call(Session session, SessionState state, Exception exception) { 

     if (session.isOpened()) { 

      //YOU CALLBACK CODE 

     } 
    } 

}, Arrays.asList("email","OTHER_PERMISSIONS_YOU_WANT_TO_REQUEST"));
+0

코드에서 누락 된 라인 ... (그리고 빌더)입니다 이 user.asMap(). get ("email")과 같이 이메일에 접근하지만 항상 null을 리턴한다. – toobsco42

+0

고마워, 이건 나를 위해 일했다 .. – MithunRaj

1
Session.Builder bui = new Builder(this); //should be an activity 
    Session session = bui.build(); 
    Session.OpenRequest openRequest = new OpenRequest(context); 
    List<String> permission=new ArrayList<String>(); 
     permission.add("user_birthday"); 
     permission.add("user_likes"); 
     permission.add("user_questions"); 
     permission.add("user_interests"); 
     permission.add("user_relationships"); 
     permission.add("user_groups"); 
     permission.add("user_religion_politics"); 
     permission.add("friends_birthday"); 
     permission.add("user_location"); 
     permission.add("friends_likes"); 
     permission.add("friends_groups"); 
     permission.add("user_education_history"); 
     permission.add("friends_relationships"); 
     permission.add("email"); 

    openRequest.setPermissions(permission); 
    Session.setActiveSession(session);//This will take care of the null pointer 
    openRequest.setCallback(this);//the callback 
    session.openForRead(openRequest); 

Session.setActiveSession (세션)을 호출 할 수 있습니다; `authButton.setReadPermissions (Arrays.asList ("이메일을"));`다음에 시도 :
내가 같이 읽기 권한을 설정하려고 시도

관련 문제