[英]Android facebook login not working with installed Facebook app
[英]android facebook login is not working with native facebook installed
我正在嘗試在我的Android應用程序中實現Facebook登錄。 我的應用程序未詢問設備中安裝的本機Facebook的權限。 但是當我切換到Web登錄界面時,登錄工作正常。 是常見問題,還是我想念某物..?
SplashFragment.java
import java.util.Arrays;
import com.facebook.widget.LoginButton;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class SplashFragment extends Fragment {
private final String APP_ID = "XXXXXXXXX";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.splash, container, false);
LoginButton authButton = (LoginButton) view
.findViewById(R.id.login_button);
//authButton.setFragment(this);
authButton.setApplicationId(APP_ID);
authButton.setReadPermissions(Arrays
.asList("read_stream", "basic_info","public_profile"));
return view;
}
}
我正在使用facebook sdk提供的LoginActivity.java。
每當我們嘗試使用keytool(通過命令提示符)生成hashkey時,我都會遇到此問題。通過使用代碼生成hash鍵,我們可以解決此問題。 樣例代碼:
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
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) {
}
...參考鏈接: 請檢查此鏈接
為了使facebook登錄可以與本機應用程序一起使用,您需要生成像這樣的hashkey
對於Linux
打開終端:
對於調試版本
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
您將在“ .android”文件夾中找到debug.keystore ,然后將其復制並粘貼到桌面上並運行上述命令
發布版本
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
注意:確保在兩種情況下都必須輸入密碼。 如果未要求輸入密碼,則表示命令中存在錯誤。
在哪里設置HashKey?
1)打開Facebook開發人員頁面
https://developers.facebook.com/apps/
2)按照屏幕截圖
使用該方法生成哈希鍵..命令行方式總是給我錯誤的哈希值
public static String getAppKeyHash(Context context) {
// Add code to print out the key hash
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
"com.example.app", PackageManager.GET_SIGNATURES);
String hash = null;
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
hash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.d("KeyHash:", hash);
}
return hash;
} catch (NameNotFoundException e) {
return null;
} catch (NoSuchAlgorithmException e) {
return null;
}
}
用您的軟件包名稱替換com.example.app
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.