我使用官方SDK Beta 3.0。
我将在不使用loginbutton的情况下获得用户记录的额外权限(user_likes,user_likes,user_interests,friends_likes等)(如下所述,请在此处https://developers.facebook.com/docs/docs/docs/howtos/howtos/androids/androids/androidsdk/androidsdk/3.0/登录名 - 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.pointer.exception私人GraphObject Muser;...//分配您从中获得的用户对象 通话以获取用户信息
字符串宗教= muser.getProperty("宗教")。
在这里我的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项目中添加一个方法:
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是否不是null。
这是Graph API Explorer的链接。您只需选择正确的应用程序,然后单击"创建访问令牌"。在弹出对话框中,您可以设置优先的权限。
正如您在原始示例中看到的那样,称为:" sessionLogInsample" - 收到令牌后,您可以调用可从" https://graph.facebook.com/me?access_token = insert = insert_your_real_real_real_token&format&format都是从" https://graph.facebook.com/me?= 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(session);
是您的代码中缺少的行...(和构建器)