2010-12-19 3 views
1

私のコードでは、私が誰であるかを覚えた後、私が戻ってくるたびに、Facebookが表示され、要求されたアクセス許可を表示し、承認することができます。Android Facebook API認可/覚えていますが、私の側にはありませんか?

私自身のアプリケーションでは、ログインしていることを認識できないようですが、Authorizeを呼び出すとDialogListenerインターフェイスから返されることはありません。私のアプリケーションアダプタのやや不完全なコードが含まれています。

package com.metalrain.ca.newschoolshooter_full; 

import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.net.MalformedURLException; 

import Hammer.App.MyLibs.APPSTATICS; 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.MotionEvent; 

import com.facebook.android.AsyncFacebookRunner; 
import com.facebook.android.DialogError; 
import com.facebook.android.Facebook; 
import com.facebook.android.FacebookError; 
import com.facebook.android.Facebook.DialogListener; 

public class FacebookIntegrator implements DialogListener{ 



public static final String APP_ID = "176680882361390"; 

private final Facebook mFacebook; 
//private final AsyncFacebookRunner mAsyncRunnoner; 

Context ctx; 
String[] Permissions = new String[] {"publish_stream", "read_stream", "offline_access"}; 

FacebookIntegrator(final Context ctx) { 
    this.ctx = ctx; 
    this.mFacebook = new Facebook(FacebookIntegrator.APP_ID); 
    //this.mAsyncRunner = new AsyncFacebookRunner(this.mFacebook); 
} 

public void SubmitScore() { 
    Log.e("MetalRain", "Started SubmitScore"+mFacebook.getAccessToken()); 
    //I use the class from the login button to do this 
    //final LoginButton lb = new LoginButton(this.ctx); 

    if (mFacebook.isSessionValid()) { 
    Log.i("MetalRain", "There is a valid facebook sessi"); 
     Bundle b = new Bundle(); 
    try { 
    mFacebook.request("/me/feed", b, "POST"); 
    } catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } catch (MalformedURLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
      b.putString("status", "This is a test: name"); 

    } else { 
    Log.i("MetalRain","Authorizing facebook"); 
    mFacebook.authorize((Activity) this.ctx,this.Permissions, 
    this); 
    } 
    Log.e("MetalRain", "Finished SubmitScore"); 
} 

     public void onComplete(Bundle values) { 
      if (!values.containsKey("post_id")) 
      { 
       try 
       { 
        Bundle parameters = new Bundle(); 
        parameters.putString("message", "this is a test");// the message to post to the wall 
        mFacebook.dialog(APPSTATICS.CTX, "stream.publish", parameters, this);// "stream.publish" is an API call 
       } 
       catch (Exception e) 
       { 
        // TODO: handle exception 
        System.out.println(e.getMessage()); 
       } 
      } 

     Log.e("MetalRain", "On Complete"); 
     } 

     public void onFacebookError(FacebookError error) { 
      Log.e("MetalRain","fbFAILURE "+error.getMessage()); 
     } 

     public void onError(DialogError error) { 
      Log.e("MetalRain","FAILURE "+error.getMessage()); 
     } 

     public void onCancel() { 
      Log.e("MetalRain","CANCELED"); 
     } 
} 

私はエラーが発生していないか、ログメッセージを返します。私の活動に戻り、何も起こっていないかのように行動します。

+0

私はエミュレータで成功しました。私のコードはそこで動作し、実行し、テストメッセージを提出し、私の壁に書き込んだ。まだネクサスでは成功していない。 UIも違っていて、ダイアログボックスにログインウィンドウが表示されましたが、N1ではフルスクリーンの動作として表示されましたか? – HaMMeReD

+0

問題の根源になる可能性のある自分のアプリケーションでシングルサインインを使用しようとしましたが、うまくいけばログインとパスワードを求められました。 – HaMMeReD

+0

私は自分の携帯電話からすべてのFacebook Appのアップデートを削除し、すべての私の機能は動作しますが、最新のFacebookアプリでのみ壊れているようです。誰でも回避策がありますか?ログインはちょうどコールバックではありません – HaMMeReD

答えて

3
@Override 
protected void onActivityResult(int requestCode, int resultCode, 
           Intent data) { 
    fbi.mFacebook.authorizeCallback(requestCode, resultCode, data); 
} 

それは完全に活動していないリモートダイアログのいくつかのフォームだったので、これは、最新バージョンで必要とされました。これを追加すると、すべて機能しました(上記のコードではなく、私のアクティビティに追加されました.fbiは上にリンクされたクラスのFacebookIntegratorです)。

関連する問題