簡體   English   中英

如何使用android sdk 3.0 beta獲得Facebook附加權限?

[英]How to get Facebook Additional Permissions with android sdk 3.0 beta?

我正在使用官方的sdk beta 3.0為Android開發一個簡單的Facebook應用程序。

我將獲得用戶登錄(user_likes,user_interests,friends_likes等等)的額外權限,而無需使用LoginButton(如此處所述https://developers.facebook.com/docs/howtos/androidsdk/3.0/login-with -facebook / )事實上,我正在通過方法獲得額外的權限

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 * * ()時,它不會顯示除基本信息之外的其他方法。

謝謝!


我正在使用Null.pointer.exception

私有GraphObject mUser; ... //分配您從通話中獲得的用戶對象以獲取用戶的信息

String religion = mUser.getProperty(“religion”)。toString();

這里我的logcat:

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)

創建會話后,您可以獲得其他權限。 沒有關閉會話

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

            session.requestNewReadPermissions(newPermissionsRequest);

將方法添加到Facebook Android SDK項目中的com.facebook.Session.java類:

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"));

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();

希望這能回答你的問題。

檢查mUser是否為空。

這是Graph api explorer的鏈接。 您只需選擇正確的應用程序並單擊創建訪問令牌。 進入彈出對話框,您可以設置首選權限。

正如您在原始示例中看到的那樣:“SessionLoginSample” - 在收到TOKEN之后,您可以調用JSON文件結構,該結構可從“ https://graph.facebook.com/me?access_token=insert_your_real_token&format=json ”獲得。

該json文件是響應,包含因用戶私有設置而可用的所有信息。

我希望我幫忙。

    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(會話);
是代碼中缺少的行...(和構建器)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM