के दौरान लॉगिन प्रमाण-पत्रों के लिए कहा जाता है, मैं अपने एंड्रॉइड ऐप में नया फेसबुक एसडीके 3.0 लागू करने की कोशिश कर रहा हूं और मैंने एक समस्या में भाग लिया है। मेरी समस्या यह है कि उपयोगकर्ता को पढ़ने की अनुमति ("post_to_wall") अनुमति देने के लिए फिर से लॉग इन करने के लिए कहा जाता है, भले ही उपयोगकर्ता पहले से लॉग इन अनुमतियों के साथ लॉग इन हो। यह तब होता है जब उपयोगकर्ता के पास एफबी एप्लीकेशन स्थापित नहीं होता है। अगर उसके पास एफबी एप्लीकेशन स्थापित है, तो उसे केवल अनुमति देने के लिए कहा जाता है।उपयोगकर्ता को पुनः प्राधिकरण
public void call(final Session session, final SessionState state, final Exception exception) {
if (session.isOpened()) {
if (state.equals(SessionState.OPENED_TOKEN_UPDATED)) {
// code if new permissions have been granted
} else {
// code for login
}
} else if (session.isClosed()) {
// code for user canceled login
} else if (exception != null) {
// code if there were errors during login
}
}
}
इस कोड मैं गतिविधि जिसे प्रवेश कॉल की onActivityResult विधि को जोड़ा गया है:
public void login(Activity activity) {
Session session = Session.getActiveSession();
if (session == null || !session.isOpened()) {
openActiveSession(activity, true, sessionStatusCallback);
}
}
private Session openActiveSession(final Activity activity, final boolean allowLoginUI, final StatusCallback callback) {
return openActiveSession(activity, allowLoginUI, new OpenRequest(activity).setCallback(callback));
}
private Session openActiveSession(final Context context, final boolean allowLoginUI, final OpenRequest openRequest) {
Session session = new Builder(context).setApplicationId(FACEBOOK_APPLICATION_ID).build();
if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI) {
Session.setActiveSession(session);
session.openForRead(openRequest);
return session;
}
return null;
}
इसके लिए कॉलबैक के कॉल विधि है:
यह मैं कैसे लॉगिन लागू किया है:
Session.getActiveSession().onActivityResult(activity, requestCode, resultCode, data);
और यह मैं कैसे नई अनुमतियां मांगेंगे है:
Session session = Session.getActiveSession();
if (session != null && session.isOpened()) {
if (DONT_HAVE_PERMISSIONS) {
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(activity,
FACEBOOK_PERMISSIONS).setRequestCode(FACEBOOK_AUTHORIZE_ACTIVITY_CODE);
session.requestNewPublishPermissions(newPermissionsRequest);
}
}
मैंने इस समस्या के बारे में और जानने के लिए प्रयास किया है, और मुझे केवल कुछ संकेत मिले हैं कि इसका इरादा है, लेकिन मुझे कुछ भी ठोस नहीं मिला है।
क्या यह डिफ़ॉल्ट व्यवहार है? यदि हां, तो क्या इसके आसपास कोई रास्ता है? या, शायद मैंने कुछ गलत किया?
सहायता के लिए धन्यवाद।