2012-12-14 4 views
11

私は自分のAndroidアプリにFacebookの統合を実装しようとしていますが、Facebookに正常にログインしますが、アクセストークンをアプリに戻そうとすると返されます:Android fbconnectのFacebookとの統合壊れたリンク

Webページfbconnectで://成功#1 access_tokenは= [アクセストークン] は一時的に停止しているか、新しい ウェブアドレスに移動した可能性があり。

明らかに、[ACCESS TOKEN]は長い文字列です。

私は正しいアプリケーションIDを持っており、Facebookのキーハッシュを追加しました。しかし、私はどのようなプロセスを欠場することができますか?

コード:

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

それは最終的な目標ですが、問題はFacebookが私のアプリに戻ってアクセストークンを使ってリダイレクトしようとすると、上記のメッセージを表示することです。 (Webページは利用できません)。したがって、私のアプリはアクセストークンを取得することができないため、決して許可することはできません。 – anothershrubery

+0

あなたのアプリケーションはfacebookアプリケーションに向いていますし、トークンを提供していないか、直接URアプリケーションからログインしたときトークンを与えています –

答えて

1

私はデバイス上でネイティブのFacebookのアプリケーションを更新し、すべてが動作します。

1

ネイティブFacebook Appのようなものはバージョン2以上である必要があります。私は1.9.6バージョンでも同じ問題を抱えており、Facebookのアプリケーションをアップグレードすることで問題は解決されます。

関連する問題