2015-07-07 6 views
5

मैं संवाद के बिना फेसबुक पर पोस्ट करने के लिए, बस प्रोग्राम के, मैंएंड्रॉयड: पोस्ट अमेरिकन प्लान एसडीके 4.x के साथ प्रोग्राम के फेसबुक को

public void login(CallbackManager callbackManager) { 
    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      Log.d(LOGTAG, "facebook login success"); 
      share("kk"); 
     } 

     @Override 
     public void onCancel() { 
      Log.w(LOGTAG, "facebook login canceled"); 
      share("kk"); 
     } 

     @Override 
     public void onError(FacebookException exception) { 
      Log.e(LOGTAG, "facebook login error"); 
      exception.printStackTrace(); 
     } 
    }); 

    LoginManager.getInstance().logInWithPublishPermissions((Activity) context, Arrays.asList("publish_actions")); 
} 

public void share(final String msg) { 

    Log.d(LOGTAG, "facebook sharing new message"); 
    Set<String> permissions = AccessToken.getCurrentAccessToken().getPermissions(); 
    AccessToken accessToken = AccessToken.getCurrentAccessToken(); 

    Bundle postParams = new Bundle(); 
    postParams.putString("name", "yourTitle"); 
    postParams.putString("caption", "yourCaption"); 
    postParams.putString("description", "yourDesc"); 
    postParams.putString("message", "yourMessage"); 

    GraphRequest request = new GraphRequest(accessToken, "me/feed", postParams, HttpMethod.POST, null); 
    AsynTaskGraphRequest asynTaskGraphRequest = new AsynTaskGraphRequest(request); 
    asynTaskGraphRequest.execute(); 
} 

साथ कोशिश कर रहा हूँ चाहता हूँ समस्या यह है जब फेसबुक में एप्लिकेशन लॉग यह पता चलता है कि हालांकि मैं

LoginManager.getInstance().logInWithPublishPermissions((Activity) context, Arrays.asList("publish_actions")); 

enter image description here

दूसरी ओर उपयोग कर रहा हूँ संदेश "यह फेसबुक एप्लिकेशन को पद नहीं करता है", मैं कैसे जांच कर सकते हैं कि क्या उपयोगकर्ता अभी भी में लॉग ऑन है लॉग इन करने के लिए fb केवल एक बार प्रकाशित करें?

धन्यवाद!

+0

आप फेसबुक एप्लिकेशन पेज में एक सत्यापित डेवलपर/परीक्षक के रूप में उपयोगकर्ता जोड़ दिया है? – Ankush

+0

आप सही हैं, यह मेरी समस्या हल करता है! धन्यवाद! – BlackBishop

उत्तर

3

जैसा कि @ एंकुश ने कहा है, डेवलपर फेसबुक वेब में ऐप सेटिंग्स में अधिकृत डेवलपर के रूप में पंजीकृत होना अनिवार्य है।

मेरे अंतिम कोड (अब काम ठीक) है:

public class FbManager { 

private Context context; 
private static final String LOGTAG = "FbManager"; 
private CallbackManager callbackManager; 

public FbManager(Context context, CallbackManager callbackManager){ 
    this.context = context; 
    this.callbackManager = callbackManager; 
} 

public static void traceKeyHash(Activity activity){ 
    try { 
     PackageInfo info = activity.getPackageManager().getPackageInfo("com.muv.android", PackageManager.GET_SIGNATURES); 
     for (Signature signature : info.signatures) { 
      MessageDigest md = MessageDigest.getInstance("SHA"); 
      md.update(signature.toByteArray()); 
      Log.i(LOGTAG, "Share - KeyHash: " + Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
     } 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public void share(final String msg) { 

    if (isLoggedIn()) { 
     post(msg); 
    } 
    else{ 
     LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       Log.d(LOGTAG, "facebook login success"); 
       post(msg); 
      } 

      @Override 
      public void onCancel() { 
       Log.w(LOGTAG, "facebook login canceled"); 
      } 

      @Override 
      public void onError(FacebookException exception) { 
       Log.e(LOGTAG, "facebook login error"); 
       exception.printStackTrace(); 
      } 
     }); 

     LoginManager.getInstance().logInWithPublishPermissions((Activity) context, Arrays.asList("publish_actions")); 
    } 
} 

public boolean isLoggedIn() { 
    AccessToken accessToken = AccessToken.getCurrentAccessToken(); 
    return accessToken != null; 
} 

private void post(final String msg){ 
    Log.d(LOGTAG, "facebook posting new message"); 
    Set<String> permissions = AccessToken.getCurrentAccessToken().getPermissions(); 
    AccessToken accessToken = AccessToken.getCurrentAccessToken(); 

    Bundle postParams = new Bundle(); 
    postParams.putString("message", msg); 

    GraphRequest request = new GraphRequest(accessToken, "me/feed", postParams, HttpMethod.POST, null); 
    GraphRequestAsyncTask asynTaskGraphRequest = new GraphRequestAsyncTask (request); 
    asynTaskGraphRequest.execute(); 
} 
} 
+0

क्या आप अपना आयात विवरण पोस्ट कर सकते हैं? मेरे मामले में 'AsynTaskGraphRequest' को हल नहीं किया गया है, मैं फेसबुक के 4.6.0 एसडीके का उपयोग कर रहा हूं –

संबंधित मुद्दे