1

アプリで Facebook SDK 3 を使用しています。アプリで使用するユーザー情報を取得したいと考えています。デバイスに Facebook アプリがインストールされていれば、問題なく動作しています。ログインしておらず動作している場合は、ログインを求めます。しかし、デバイスに Facebook アプリがインストールされていなくても、アプリが動作するようにしたいと考えています。どうすればできますか。私のコードは以下です。助けてください

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 graphuser,
                                    Response response) {
                                L
                                if (graphuser != null) {
                                    GraphObject graphObject = response
                                            .getGraphObject();
                                    Log.i(" facebookLogin Email is ",
                                            "value"
                                                    + graphObject
                                                            .getProperty("email"));
                                    User user = getUserDetails(graphObject,
                                            graphuser.getId());
                                    sendFBCredentialsToServer(user);
                                    updateSharedPrefsWithFacebookCredentials(user);

                                }
                            }

                        });
                Toast.makeText(getApplicationContext(),
                        "Pls wait , Fetching data", Toast.LENGTH_LONG)
                        .show();
            }
        }
    });
4

2 に答える 2

1
// Add code to print out the key hash


try {
PackageInfo info = getPackageManager().getPackageInfo(
        "com.your.packagename", 
        PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
    MessageDigest md = MessageDigest.getInstance("SHA");
    md.update(signature.toByteArray());
    Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));// g
    }
} catch (NameNotFoundException e) {

} catch (NoSuchAlgorithmException e) {

}

このコードをonCreateに追加し、Facebookからハッシュキーを取得し、Facebookのアプリ設定でこのキーを置き換えます

于 2013-03-05T04:45:15.810 に答える
0

main.xml に Facebook LoginButton を追加します。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.facebook.widget.LoginButton
    android:id="@+id/loginButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Login With Facebook" />

</LinearLayout>

これで、facebook loginbutton をクリックするたびに、インストールされている場合は Facebook アプリが開きます。それ以外の場合は、webview で Facebook ログインページが開きます

onCreate

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

   LoginButton authButton = (LoginButton) view.findViewById(R.id.loginButton);
   authButton.setReadPermissions(Arrays.asList("email","user_about_me"));

}

onSessionStateChange

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
             if( session.isOpen())
                  getUserData();

}
public void getUserData()
{
Request.executeMeRequestAsync(Session.getActiveSession(), 
                              new GraphUserCallback() {

        @Override
        public void onCompleted(GraphUser user, Response response) {

            Log.d("FNAME", user.getFirstName());
            Log.d("LNAME", user.getLastName());
            Log.d("GENDER",user.getProperty("gender").toString());
            Log.d("EMAIL_ID",user.getProperty("email").toString());
            Log.d("FACEBOOK_ID",user.getId());
             }                  
    });
 }
于 2013-03-04T12:59:27.340 に答える