2013-07-18 82 views
1

我正在开发一个应用程序,并希望与Facebook进行整合。我从第一个例子开始(first app facebook SDK 3.0 POINT 6),但它不工作,我不知道为什么。Android + Facebook SDK 3.0快速入门实例

下面是主要活动:

import java.security.MessageDigest; 
    import java.security.NoSuchAlgorithmException; 

    import android.os.Bundle; 
    import android.app.Activity; 
    import android.content.Intent; 
    import android.content.pm.PackageInfo; 
    import android.content.pm.PackageManager; 
    import android.content.pm.PackageManager.NameNotFoundException; 
    import android.content.pm.Signature; 
    import android.widget.TextView; 
    import com.facebook.*; 
    import com.facebook.model.*; 

    import android.util.Base64; 
    import android.util.Log; 
    import android.view.Menu; 

    public class MainActivity extends Activity { 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Add code to print out the key hash 
     try { 
      PackageInfo info = getPackageManager().getPackageInfo(
        "com.facebook.login", 
        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)); 
       } 
     } catch (NameNotFoundException e) { 

     } catch (NoSuchAlgorithmException e) { 

     } 



     // 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) { 
        TextView welcome = (TextView) findViewById(R.id.wellcome); 
        welcome.setText("Hello " + user.getName() + "!"); 
        } 
       } 
       }); 
      } 
      } 
     }); 
     } 

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

这里是清单:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.facebook.login" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 
    <uses-permission android:name="android.permission.INTERNET"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.facebook.login.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name="com.facebook.LoginActivity"/> 
     <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/> 

    </application> 

</manifest> 

和这里是activity_main(在RelativeLayout的):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

<TextView 
    android:id="@+id/wellcome" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="@string/hello_world" /> 

当我启动了活动出现这个:出现一个对话框。它说,这:

“登录想访问你的公众形象和frien列表(OK/CANCEL)”

,并当我把OK出现这样的:“你好词”

问题不出现用户名(Hello Martin)。

什么问题?

回答

0

试图通过将空的TextView

android:text="" 

,而不是

android:text="@string/hello_world" 

和执行后,执行应用程序,如果你再次得到了空的TextView,出现问题可能是你的方法

user.getName() 
+0

嗨我调试应用程序,但它从来没有调用onComplete方法在所有的应用程序,因为它永远不会改变文字。 – user2596723

+0

检查通话异常详情。也许你的Session.openActiveSession调用有问题。 – Ron