0

Facebook開発者ページで説明されているように、単純なログインアクティビティを機能させようとしています: https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/

これまでの私のコード:

package com.xxxx.android;


import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.actionbarsherlock.app.SherlockActivity;
import com.facebook.Request;
import com.facebook.Response;
import com.facebook.Session;
import com.facebook.SessionState;
import com.facebook.model.GraphUser;

public class MyTestsActivity extends SherlockActivity implements OnClickListener{

    private Button mFbLogin;
    private TextView mWelcome;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_tests);
        setViews();

      }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

    }
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId()) {
        case R.id.bFbLogin:
            facebookLogin();
            break;
        }
    }

    private void facebookLogin() {
        // TODO Auto-generated method stub

        // start Facebook Login
        Session.openActiveSession(this, true, new Session.StatusCallback() {

          // callback when session changes state
          @Override
          public void call(Session session, SessionState state, Exception exception) {
            if (session.isOpened()) {

              // make request to the /me API
              Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                // callback after Graph API response with user object
                @Override
                public void onCompleted(GraphUser user, Response response) {
                  if (user != null) {
                    mWelcome.setText("Hello " + user.getName() + "!");
                  }
                }
              });
            }
          }
        });
    }

    private void setViews() {
        mFbLogin = (Button) findViewById(R.id.bFbLogin);
            mFbLogin.setOnClickListener(this);
        mWelcome = (TextView) findViewById(R.id.tvWelcome);
    }

}

アプリが読み込まれ、ログイン ボタンを押すと、ダイアログが開き、アプリへのアクセスを許可するように求められます。[はい] を押すと、アクティビティは元の状態に戻ります。textview は、facebook が指定した onCompleted メソッドで発生するはずのユーザー情報で更新されません。何か案は?

4

1 に答える 1

2

私はあなたのコードを見ました。私は Android 用の Facebook SDK の成熟した開発者ではありませんが、問題は onActivityResult にあると思います。次のコードを実装してみてください。私もあなたと同じコードを実装しましたが、私の問題は解決しました。

   @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    facebook.authorizeCallback(requestCode, resultCode, data);
}
于 2013-10-19T19:41:42.017 に答える