2012-12-14 39 views
11

Tôi đang cố triển khai tích hợp Facebook vào ứng dụng Android của mình và nó tắt và đăng nhập vào Facebook, nhưng khi nó cố chuyển mã truy cập trở lại ứng dụng, nó chỉ trả về:Tích hợp Facebook trên liên kết Android fbconnect bị hỏng

Trang web tại fbconnect: // thành công # access_token = [TIẾP CẬN TOKEN] có thể tạm thời hoặc nó có thể đã chuyển hẳn sang một địa chỉ web mới.

Rõ ràng là nơi [ACCESS TOKEN] là một chuỗi ký tự dài.

Tôi đã nhận được ID ứng dụng chính xác và thêm băm khóa vào facebook. Nhưng tôi có thể bỏ lỡ quá trình nào?

Code:

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(); 
} 

} 

mới để phát triển Android vì vậy tôi chắc chắn rằng nó là một cái gì đó đơn giản.

+0

vấn đề của bạn là gì? bạn không thể gửi tin nhắn – TNR

+0

Vâng đó là mục tiêu cuối cùng, nhưng vấn đề là khi Facebook cố gắng chuyển hướng trở lại ứng dụng của tôi, với mã thông báo truy cập, nó hiển thị thông báo trên. (Trang web hiện không khả dụng). Do đó, ứng dụng của tôi không thể nhận được mã thông báo truy cập và do đó không bao giờ có thể được ủy quyền. – anothershrubery

+0

là ứng dụng của bạn sẽ truy cập vào ứng dụng facebook và sau đó nó không cung cấp mã thông báo khi bạn đăng nhập từ ứng dụng ur trực tiếp –

Trả lời

1

Tôi đã cập nhật ứng dụng facebook gốc trên thiết bị và mọi thứ hoạt động.

1

Có vẻ như ứng dụng Facebook gốc phải là phiên bản 2 trở lên. Tôi thấy cùng một vấn đề đối với phiên bản 1.9.6 và việc nâng cấp ứng dụng Facebook sẽ giải quyết được vấn đề.

Các vấn đề liên quan