2012-12-14 18 views
11

मैं अपने एंड्रॉइड ऐप में फेसबुक एकीकरण को कार्यान्वित करने की कोशिश कर रहा हूं और यह फेसबुक पर ठीक हो जाता है और लॉग इन करता है, लेकिन जब यह ऐप पर पहुंच टोकन पास करने का प्रयास करता है तो यह वापस आता है:एंड्रॉइड एफबीकनेक्ट टूटी हुई लिंक पर फेसबुक एकीकरण

वेबपेज fbconnect पर: // सफलता # ACCESS_TOKEN = [पहुँच टोकन] अस्थायी रूप से बंद हो सकता है या यह एक नया वेब पते पर स्थायी रूप से स्थानांतरित हो सकता है।

स्पष्ट रूप से [ACCESS TOKEN] वर्णों का एक लंबा अनुक्रम है।

मुझे ऐप आईडी सही है और फेसबुक के लिए हैश जोड़ा गया है। लेकिन मैं किस प्रक्रिया को याद कर सकता था?

कोड:

public class FacebookActivity extends Activity { 

private static final String APP_ID = "[MY APP ID]"; 
private static final String[] PERMISSIONS = new String[] {"publish_stream"}; 

private static final String TOKEN = "access_token"; 
    private static final String EXPIRES = "expires_in"; 
    private static final String KEY = "facebook-credentials"; 

private Facebook facebook; 
private String messageToPost; 

public boolean saveCredentials(Facebook facebook) { 
     Editor editor = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE).edit(); 
     editor.putString(TOKEN, facebook.getAccessToken()); 
     editor.putLong(EXPIRES, facebook.getAccessExpires()); 
     return editor.commit(); 
    } 

    public boolean restoreCredentials(Facebook facebook) { 
     SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE); 
     facebook.setAccessToken(sharedPreferences.getString(TOKEN, null)); 
     facebook.setAccessExpires(sharedPreferences.getLong(EXPIRES, 0)); 
     return facebook.isSessionValid(); 
    } 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    facebook = new Facebook(); 
    restoreCredentials(facebook); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 

    setContentView(R.layout.activity_facebook); 

    String facebookMessage = getIntent().getStringExtra("facebookMessage"); 
    if (facebookMessage == null){ 
     facebookMessage = "Test wall post"; 
    } 
    messageToPost = facebookMessage; 

      if (! facebook.isSessionValid()) { 
     loginAndPostToWall(); 
    } 
    else { 
     postToWall(messageToPost); 
    } 
} 

public void loginAndPostToWall(){ 
    facebook.authorize(this, APP_ID, PERMISSIONS, new LoginDialogListener()); 
} 

public void postToWall(String message){ 
    Bundle parameters = new Bundle(); 
      parameters.putString("message", message); 
      parameters.putString("description", "topic share"); 
      try { 
       facebook.request("me"); 
     String response = facebook.request("me/feed", parameters, "POST"); 
     Log.d("Tests", "got response: " + response); 
     if (response == null || response.equals("") || 
       response.equals("false")) { 
      showToast("Blank response."); 
     } 
     else { 
      showToast("Message posted to your facebook wall!"); 
     } 
     finish(); 
    } catch (Exception e) { 
     showToast("Failed to post to wall!"); 
     e.printStackTrace(); 
     finish(); 
    } 
} 

class LoginDialogListener implements DialogListener { 
    @Override 
    public void onComplete(Bundle values) { 
     saveCredentials(facebook); 
     if (messageToPost != null){ 
     postToWall(messageToPost); 
    } 
    } 
    public void onFacebookError(FacebookError error) { 
     showToast("Authentication with Facebook failed!"); 
     finish(); 
    } 
    public void onError(DialogError error) { 
     showToast("Authentication with Facebook failed!"); 
     finish(); 
    } 
    public void onCancel() { 
     showToast("Authentication with Facebook cancelled!"); 
     finish(); 
    } 
} 

private void showToast(String message){ 
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); 
} 

} 

नया Android विकास के लिए तो मुझे यकीन है कि यह कुछ आसान है हूँ।

+0

आपकी समस्या क्या है? आप संदेश पोस्ट करने में असमर्थ हैं – TNR

+0

वैसे यह अंतिम लक्ष्य है, लेकिन समस्या यह है कि जब फेसबुक मेरे ऐप पर वापस रीडायरेक्ट करने का प्रयास करता है, तो पहुंच टोकन के साथ, यह उपर्युक्त संदेश दिखाता है। (वेब पेज उपलब्ध नहीं हैं)। इसलिए मेरा ऐप एक्सेस टोकन नहीं प्राप्त कर सकता है और इसलिए कभी अधिकृत नहीं किया जा सकता है। – anothershrubery

+0

आपका एप्लिकेशन फेसबुक एप्लिकेशन पर जा रहा है और फिर यह टोकन प्रदान नहीं कर रहा है या जब आप सीधे अपने आवेदन से लॉगिन करते हैं तो यह आपको टोकन दे रहा है –

उत्तर

1

मैंने डिवाइस पर मूल फेसबुक ऐप अपडेट किया और सबकुछ काम करता है।

1

लगता है कि मूल फेसबुक ऐप संस्करण 2 या उच्चतम होना चाहिए। मुझे 1.9.6 संस्करण के लिए एक ही समस्या दिखाई दे रही है, और फेसबुक ऐप को अपग्रेड करना इस मुद्दे को हल करता है।