2011-04-23 68 views
6

Tôi đang phát triển một ứng dụng Android nơi tôi muốn tích hợp facebook như thế nào. Tôi đã trải qua liên kết http://developers.facebook.com/docs/guides/mobile/#androidTích hợp facebook Android

Tôi có vài nghi ngờ:

  1. Tôi tạo phím sử dụng keytool nhưng không thể hiểu làm thế nào để đăng ký nó trong Điện thoại di động và các thiết bị mục. Phần Di động và Thiết bị này ở đâu?

  2. Làm cách nào để triển khai chức năng nút như Facebook trong ứng dụng của tôi? Bất kỳ mã mẫu nào cũng thực sự hữu ích.

Rgds, Sapan

www.darooadda.com

Trả lời

2

1) Thực hiện theo con đường này:

  • Đến http://www.facebook.com/developers/
  • nhấp chuột vào liên kết ứng dụng sang bên phải
  • nhấp vào chỉnh sửa cài đặt (trên menu trên ri ght)
  • nhấp vào Thiết bị di động và thiết bị trên menu ở bên trái.

2) Bạn có muốn tạo ứng dụng gốc hoặc truy cập ứng dụng thông qua chế độ xem web không? Nếu đó là chế độ xem web, sau đó tạo trang web như trong bất kỳ mã html nào khác. Để bắt đầu với ứng dụng gốc, bạn đã xem ví dụ tại: https://github.com/facebook/facebook-android-sdk/tree/master/examples/simple?

+0

Tôi đang tìm kiếm để tạo ra một ứng dụng bản địa nơi nào trên người dùng có thể thích một mục nào đó và chia sẻ trên FB..do bạn có mã mẫu nào không? – Sapan

1

Tôi không thực sự trả lời câu hỏi, nhưng tôi khuyên bạn nên sử dụng mục đích chia sẻ trong Android thay vì API bật lên cần xác thực. Nếu người dùng Android có tài khoản Facebook, anh ấy có thể sẽ có ứng dụng facebook.

CẬP NHẬT: Có xem xét các tài liệu: http://developer.android.com/reference/android/content/Intent.html

Nó phải là một cái gì đó như thế này:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_TEXT, "Extra message"); 

startActivity(Intent.createChooser(intent, "message")); 

Có lẽ bạn có thể trực tiếp chỉ nhắm mục tiêu ứng dụng facebook.

+0

Tôi không thực sự hiểu điều này đúng cách. Bạn có thể giải thích dùm không? – Sapan

+0

chia sẻ với facebook bằng cách sử dụng ý định hiện có lỗi. hy vọng nó sẽ được sửa chữa sớm. http://stackoverflow.com/questions/3515198/share-text-on-facebook-from-android-app-via-action-send –

+0

Chia sẻ mục đích sử dụng là một thực tiễn tốt, nhưng sẽ không hoạt động với Facebook, ví dụ , khi chia sẻ cả văn bản và bức ảnh. Facebook muốn bạn sử dụng các API của nó. –

0
package com.notifaction.fb_intgration; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.facebook.CallbackManager; 
import com.facebook.FacebookCallback; 
import com.facebook.FacebookException; 
import com.facebook.FacebookSdk; 
import com.facebook.GraphRequest; 
import com.facebook.GraphResponse; 
import com.facebook.Profile; 
import com.facebook.login.LoginManager; 
import com.facebook.login.LoginResult; 
import com.facebook.login.widget.LoginButton; 

import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.Arrays; 

public class MainActivity extends AppCompatActivity { 

    private CallbackManager callbackManager; 

    TextView username,facebook; 
    private String facebook_id,f_name, m_name, l_name, full_name, email_id; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     callbackManager = CallbackManager.Factory.create(); 

     setContentView(R.layout.activity_main); 

     facebook = (TextView)findViewById(R.id.login_facebook); 
     username=(TextView)findViewById(R.id.username); 

     callbackManager = CallbackManager.Factory.create(); 
     LoginManager.getInstance().registerCallback(callbackManager, 
       new FacebookCallback<LoginResult>() { 
        @Override 
        public void onSuccess(LoginResult loginResult) { 
         Log.d("Success", "Login"); 
         GraphRequest request = GraphRequest.newMeRequest(
           loginResult.getAccessToken(), 
           new GraphRequest.GraphJSONObjectCallback() { 
            @Override 
            public void onCompleted(JSONObject object, GraphResponse response) { 
             Log.v("LoginActivity", response.toString()); 
             // Application code 
             try { 
              String email = object.getString("email"); 
              String name = object.getString("name"); 
              Toast.makeText(MainActivity.this, ""+email+" "+name, Toast.LENGTH_LONG).show(); 

             } catch (JSONException e) { 
              e.printStackTrace(); 
             } 
            } 
           }); 
         Bundle parameters = new Bundle(); 
         parameters.putString("fields", "id,name,email,gender,birthday"); 
         request.setParameters(parameters); 
         request.executeAsync(); 
        } 

        @Override 
        public void onCancel() { 
         Toast.makeText(MainActivity.this, "Login Cancel", Toast.LENGTH_LONG).show(); 
        } 

        @Override 
        public void onError(FacebookException exception) { 
         Toast.makeText(MainActivity.this, "Login unsuccessful!", Toast.LENGTH_LONG).show(); 
        } 
       }); 
     facebook.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "email", "user_birthday", "user_friends")); 
      } 
     }); 
     username.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       LoginManager.getInstance().logOut(); // logout in facebook account 
      } 
     }); 
    } 


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


////////////// xml /////// 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:facebook="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:gravity="center"> 

    <TextView 
     android:id="@+id/username" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="logout" 
     android:layout_margin="10dp" 
     android:textSize="20sp" /> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="40dp" 
     android:layout_marginLeft="40dp" 
     android:layout_marginTop="10dp"> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="LOGIN WITH FACEBOOK" 
      android:gravity="center" 
      android:background="@drawable/facebook_buttion_background" 
      android:textSize="14dp" 
      android:paddingLeft="20dp" 
      android:drawableLeft="@drawable/fb" 
      android:textColor="@color/white" 
      android:textStyle="bold" 
      android:id="@+id/login_facebook" /> 
    </LinearLayout> 

</LinearLayout> 

/////////////// android manifest///////////////////////////// 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.notifaction.fb_intgration"> 

    <uses-permission android:name="android.permission.INTERNET"/> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <meta-data 
      android:name="com.facebook.sdk.ApplicationId" 
      android:value="@string/facebook_app_id" /> 

     <activity android:name="com.facebook.FacebookActivity" 
      android:configChanges= 
       "keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar" 
      android:label="@string/app_name" /> 
     <provider android:authorities="com.facebook.app.FacebookContentProvider1234" 
      android:name="com.facebook.FacebookContentProvider" 
      android:exported="true" /> 
    </application> 

</manifest> 

////////////////// gradel /////////////////// 

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     applicationId "com.notifaction.fb_intgration" 
     minSdkVersion 16 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:22.2.0' 
    compile 'com.android.support:design:22.2.0' 
    compile 'com.facebook.android:facebook-android-sdk:4.6.0' 
} 
0

Tôi đã sử dụng facebook sdk 4.10.0 để tích hợp đăng nhập trong ứng dụng Android của tôi. Hướng dẫn tôi theo sau là:

Facebook login integration android studio.

Bạn sẽ có thể để có được tên đầu tiên, cuối cùng tên, email, giới tính, facebook id và ngày tháng năm sinh từ facebbok.

Hướng dẫn trên cũng giải thích cách tạo ứng dụng trong bảng điều khiển dành cho nhà phát triển facebook thông qua video.

Gradle.build

áp dụng plugin: 'com.android.ứng dụng'

android { compileSdkVersion 23 buildToolsVersion "23.0.3"

defaultConfig { 
    applicationId "com.demonuts.fblogin" 
    minSdkVersion 16 
    targetSdkVersion 22 
    versionCode 1 
    versionName "1.0" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
repositories { 
    mavenCentral() 
} 

}

phụ thuộc { biên dịch fileTree (dir: 'libs', bao gồm: [ '* .jar' ]) testCompile 'junit: junit: 4.12' biên dịch 'com.android.support:appcompat-v7:23.4.0' biên dịch 'com.facebook.android:facebook-android-sdk:4.10.0' biên dịch ' com.github.androidquery : Androidquery: 0.26.9' }

Mã nguồn cho activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:orientation="vertical" 
    tools:context="com.demonuts.fblogin.MainActivity"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="#000" 
     android:layout_marginLeft="10dp" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:id="@+id/text"/> 

    <ImageView 
     android:layout_width="300dp" 
     android:layout_height="300dp" 
     android:layout_marginTop="10dp" 
     android:layout_marginLeft="10dp" 
     android:id="@+id/ivpic" 
     android:src="@mipmap/ic_launcher"/> 

    <com.facebook.login.widget.LoginButton 
     android:id="@+id/btnfb" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginTop="10dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> </LinearLayout> 

Mã cho MainActivity.java

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ImageView; 
import android.widget.TextView; 
import com.androidquery.AQuery; 
import com.facebook.AccessToken; 
import com.facebook.AccessTokenTracker; 
import com.facebook.CallbackManager; 
import com.facebook.FacebookCallback; 
import com.facebook.FacebookException; 
import com.facebook.FacebookSdk; 
import com.facebook.GraphRequest; 
import com.facebook.GraphResponse; 
import com.facebook.Profile; 
import com.facebook.ProfileTracker; 
import com.facebook.login.LoginResult; 
import com.facebook.login.widget.LoginButton; 
import org.json.JSONException; 
import org.json.JSONObject; 
import java.util.Arrays; 

public class MainActivity extends AppCompatActivity { 



     private AQuery aQuery; 
     private ImageView ivpic; 
     private TextView tvdetails; 
     private CallbackManager callbackManager; 
     private AccessTokenTracker accessTokenTracker; 
     private ProfileTracker profileTracker; 
     private LoginButton loginButton; 
     private FacebookCallback&lt;LoginResult&gt; callback = new FacebookCallback&lt;LoginResult&gt;() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       GraphRequest request = GraphRequest.newMeRequest(
         loginResult.getAccessToken(), 
         new GraphRequest.GraphJSONObjectCallback() { 
          @Override 
          public void onCompleted(JSONObject object, GraphResponse response) { 
           Log.v("LoginActivity", response.toString()); 

           // Application code 
           try { 
            Log.d("tttttt",object.getString("id")); 
            String birthday=""; 
            if(object.has("birthday")){ 
             birthday = object.getString("birthday"); // 01/31/1980 format 
            } 

            String fnm = object.getString("first_name"); 
            String lnm = object.getString("last_name"); 
            String mail = object.getString("email"); 
            String gender = object.getString("gender"); 
            String fid = object.getString("id"); 
            tvdetails.setText("Name: "+fnm+" "+lnm+" \n"+"Email: "+mail+" \n"+"Gender: "+gender+" \n"+"ID: "+fid+" \n"+"Birth Date: "+birthday); 
            aQuery.id(ivpic).image("https://graph.facebook.com/" + fid + "/picture?type=large"); 
            //https://graph.facebook.com/143990709444026/picture?type=large 
            Log.d("aswwww","https://graph.facebook.com/"+fid+"/picture?type=large"); 

           } catch (JSONException e) { 
            e.printStackTrace(); 
           } 

          } 
         }); 
       Bundle parameters = new Bundle(); 
       parameters.putString("fields", "id, first_name, last_name, email, gender, birthday, location"); 
       request.setParameters(parameters); 
       request.executeAsync(); 

      } 

      @Override 
      public void onCancel() { 

      } 

      @Override 
      public void onError(FacebookException error) { 

      } 
     }; 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      FacebookSdk.sdkInitialize(this); 
      setContentView(R.layout.activity_main); 

      tvdetails = (TextView) findViewById(R.id.text); 
      ivpic = (ImageView) findViewById(R.id.ivpic); 

      loginButton = (LoginButton) findViewById(R.id.btnfb); 
      aQuery = new AQuery(this); 

      callbackManager = CallbackManager.Factory.create(); 

      accessTokenTracker= new AccessTokenTracker() { 
       @Override 
       protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) { 

       } 
      }; 

      profileTracker = new ProfileTracker() { 
       @Override 
       protected void onCurrentProfileChanged(Profile oldProfile, Profile newProfile) { 

       } 
      }; 

      accessTokenTracker.startTracking(); 
      profileTracker.startTracking(); 
      loginButton.setReadPermissions(Arrays.asList("public_profile", "email", "user_birthday", "user_friends")); 
      loginButton.registerCallback(callbackManager, callback); 

     } 

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

     } 

     @Override 
     public void onStop() { 
      super.onStop(); 
      accessTokenTracker.stopTracking(); 
      profileTracker.stopTracking(); 
     } 

     @Override 
     public void onResume() { 
      super.onResume(); 
      Profile profile = Profile.getCurrentProfile(); 

     } 

    } 
Các vấn đề liên quan