0
我有我得到兩個權限彈出框我的應用程序有問題。第一個是 「Explovia想訪問您的公開資料和好友列表」和第二個是 「Explovia想訪問您的公開資料和好友列表,電子郵件」。的Facebook SDK如何設置兩個讀權限一個
如何設置這兩個只是一個?因爲第二個基本上是要求第一個+電子郵件相同的權限,是否第一個權限然後真的是必要的?
// Create session and make Request object with all permisssions listed
Session s = new Session(mActivity);
Session.OpenRequest request = new Session.OpenRequest(mActivity);
request.setPermissions(Arrays.asList("email"));
request.setCallback(mCallback);
s.openForRead(request);
EDIT:添加回調代碼
private Session.StatusCallback mCallback = new Session.StatusCallback() {
@SuppressWarnings("deprecation")
@Override
public void call(Session session, SessionState state,
Exception exception) {
if (session.isOpened()) {
// make request to the /me API
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
// callback after Graph API response with user object
@Override
public void onCompleted(GraphUser user,
com.facebook.Response response) {
try {
editEmail.setText((String) user.getProperty("email").toString());
}catch(Exception e){
Toast.makeText(mActivity,"We couldn't retrieve your email because you didn't confirm your email!",Toast.LENGTH_LONG).show();
}
editName.setText(user.getFirstName());
editSurname.setText(user.getLastName());
// We must have try-catch here because if user doesn't have confirmed email, app will crash
// Get user id because we will need it later to access
// user profile picture(graph.facebook.com/uId/picture?width=x&height=x)
uId = user.getId().toString();
String url = "https://graph.facebook.com/"+uId+"/picture?width=200&height=200";
imagePhoto.setTag(url);
new DownloadImagesTask().execute(imagePhoto);
// Delete created session because we don't need it anymore
Session.getActiveSession().closeAndClearTokenInformation();
Session.setActiveSession(null);
}
});
}
}
};
該代碼看起來不錯,但你必須再次在代碼 –
@SahilMittal我加入回調函數過別的地方調用登錄,沒我請求新的權限在這裏也許? – Ado
這看起來很好。你必須把一些斷點,並在你的代碼中究竟會發生這種情況檢查.. –