2015-08-18 6 views
3

Я попытался создать социальный модуль для своего приложения, что-то вроде обертки, которое будет содержать шаблоны интеграции google +, Facebook и twitter.Проблема с интеграцией facebook с двумя модулями

Я решил начать с Facebook, но не могу найти , какие данные двух модулей мне нужно разместить в панели инструментов Facebook API.

У меня есть два имени пакета:

модуль: com.example.denis.socialwrapper
приложение: com.example.denis.socialapp

Мой модуль проекта содержит только один класс FacebookTemplate
Мой проект приложение имеет Activity и Fragment

Когда Я компилирую свой проект и нажимаю на LoginButton, он показывает только progressBar.

Вот мой класс FacebookTemplate, который находится в модуле:

public class FacebookTemplate { 
//template should has only one instance 
private static FacebookTemplate facebookTemplate; 

private String permissions; 
private String requestFields; 
private CallbackManager callbackManager; //fb callback 
private LoginButton fbButton; 
private FacebookCallback<LoginResult> callbackListener; 
private GraphRequest.Callback graphAPIListener; 

//======================================================================== 
//GET STATIC INSTANCE VIA DIFFERENT CONSTRUCTORS 
//======================================================================== 

public static FacebookTemplate getInstance(){ 
    if(facebookTemplate==null){ 
     facebookTemplate = new FacebookTemplate(); 
     facebookTemplate.setPermissions("user_profile"); 
     facebookTemplate.setRequestFields("id,name"); 
     return facebookTemplate; 
    } 
    return facebookTemplate; 
} 

public FacebookTemplate() { 
} 

//you must invoke this method before debug 
public void initFacebookIntegration(Context context){ 
    FacebookSdk.sdkInitialize(context); 
} 
//====================================================================== 
// CONFIGURING FACEBOOK INTEGRATION (FRAGMENT/ACTIVITY) 
//====================================================================== 

public void configureFacebookUsingFragment(@NonNull Fragment fragment){ 
    callbackManager = CallbackManager.Factory.create(); 
    fbButton.setReadPermissions(permissions); 
    fbButton.setFragment(fragment); 
    // Callback registration 
    fbButton.registerCallback(callbackManager, callbackListener); 
} 
public void configureFacebookUsingActivity(){ 
    callbackManager = CallbackManager.Factory.create(); 
    fbButton.setReadPermissions(permissions); 
    // Callback registration 
    fbButton.registerCallback(callbackManager, callbackListener); 
} 

//====================================================================== 
// GETTING RESULT OF onActivityResult() 
//====================================================================== 

public void throwToOnActivityResult(int requestCode,int resultCode,Intent data){ 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 

//====================================================================== 
// GETTERS AND SETTERS 
//====================================================================== 
@NonNull 
public CallbackManager getCallbackManager() { 
    return callbackManager; 
} 

public LoginButton getFbButton() { 
    return fbButton; 
} 

public void setPermissions(String permissions) { 
    this.permissions = permissions; 
} 

public String getPermissions() { 
    return permissions; 
} 

public String getRequestFields() { 
    return requestFields; 
} 

public void setRequestFields(String requestFields) { 
    this.requestFields = requestFields; 
} 

public void setFbButton(LoginButton fbButton) { 
    this.fbButton = fbButton; 
} 

public void setCallbackListener(FacebookCallback<LoginResult> callbackListener) { 
    this.callbackListener = callbackListener; 
} 

public void setGraphAPIListener(GraphRequest.Callback graphAPIListener) { 
    this.graphAPIListener = graphAPIListener; 
} 
public interface GraphAPIListener extends GraphRequest.Callback{ 
    @Override 
    void onCompleted(GraphResponse graphResponse); 
} 
public interface FacebookCallbackListener extends FacebookCallback<LoginResult>{ 
    @Override 
    void onSuccess(LoginResult loginResult); 

    @Override 
    void onCancel(); 

    @Override 
    void onError(FacebookException e); 
} 

}

В классе Application инициализирую Facebook SDK, вот код:

public class App extends Application { 

private static FacebookTemplate FBTemplate; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    initFacebook(); 
} 

private void initFacebook(){ 
    FBTemplate = FacebookTemplate.getInstance(); 
    FBTemplate.initFacebookIntegration(this); 
} 
public static FacebookTemplate getFacebookTemplate(){ 
    return FBTemplate; 
} 

}

Это мой фрагмент:

public class MainFragment extends Fragment { 

@Bind(R.id.facebook_button)LoginButton fbButton; 
private FacebookTemplate facebookTemplate; 
private static MainFragment fragment; 
public static MainFragment getInstance(){ 
    if(fragment==null){ 
     fragment = new MainFragment(); 
     return fragment; 
    } 
    return fragment; 
} 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.main_fragment,container,false); 
    ButterKnife.bind(this, v); 
    configureFacebookAPI(null,null); 
    return v; 
} 
private void configureFacebookAPI(@Nullable String permissions,@Nullable String requestFields){ 
    facebookTemplate = App.getFacebookTemplate(); 
    facebookTemplate.setFbButton(fbButton); 
    if(permissions!=null) facebookTemplate.setPermissions(permissions); 
    if(requestFields!=null) facebookTemplate.setRequestFields(requestFields); 
    facebookTemplate.configureFacebookUsingFragment(this); 
    facebookTemplate.setCallbackListener(callbackListener); 
    facebookTemplate.setGraphAPIListener(graphAPIListener); 
} 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    facebookTemplate.throwToOnActivityResult(requestCode, resultCode, data); 
} 

@Override 
public void onDestroyView() { 
    super.onDestroyView(); 
    ButterKnife.unbind(this); 
} 

FacebookTemplate.FacebookCallbackListener callbackListener = new FacebookTemplate.FacebookCallbackListener() { 
    @Override 
    public void onSuccess(LoginResult loginResult) { 

    } 

    @Override 
    public void onCancel() { 

    } 

    @Override 
    public void onError(FacebookException e) { 

    } 
}; 

FacebookTemplate.GraphAPIListener graphAPIListener = new FacebookTemplate.GraphAPIListener() { 
    @Override 
    public void onCompleted(GraphResponse graphResponse) { 

    } 
}; 

}

манифест модуля:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.denis.socialwrapper"> 


<application android:allowBackup="true" android:label="@string/app_name" 
    android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme"> 
    <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" /> 
    <meta-data 
     android:name="com.facebook.sdk.ApplicationId" 
     android:value="@string/facebook_api_key"/> 
</application> 

Манифест приложения:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.denis.socialapp" > 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="android.permission.INTERNET"/> 

<application 
    android:allowBackup="true" 
    android:name=".App" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".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> 
</application> 

ответ

0

У меня были установлены неправильные разрешения; которые решили мою проблему.

0

Попробуйте только com.example.denis. Вы должны указать только имя своего пакета.

+0

okey, попробую, но какое название класса я должен поставить? –

+0

, где вы вставили код интеграции facebook. – Das

+0

если ваш код в mainactivity.java, тогда только имя класса MainActivity, которое вы должны поставить. – Das

0

Java «package» на самом деле не имеет значения. Важным является пакет AndroidManifest. Оттуда проверьте свой пакет.

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

........ 

</manifest> 
+0

они похожи, посмотрите на обновление, я ставлю код –

Смежные вопросы