我需要自动查找和下载个人资料图片,以便用户只知道他的电子邮件地址.最初,考虑到积极使用它的人数,我专注于Facebook.但是,他们的API似乎没有任何直接支持.
这里有类似的问题: 如何从登录电子邮件地址获取一个facebook用户ID已经过时了,目前的答案是"它已被弃用"/"它不可能"...编辑:我发现了更好的问题:通过已知的电子邮件地址查找Facebook用户(网址到个人资料页面)(实际上解释了为什么以及何时不支持此功能)
让我觉得这应该是可能的是Spokeo在某种程度上这样做:http: //www.spokeo.com/email-search/search?e = beb090303%40hotmail.com
有一些服务/原料药提供了这种功能:
Clearbit
PIPL
......但我还没有发现任何自由.
如果有一些解决方法或不同的方法,而不是使用Facebook的API来实现这一点,我想知道.如果Facebook在这里真的完全无望,那么这些组合:Google+,Linkedin和/或Gravatar都可以做到.
一旦拥有Facebook的用户名或用户ID,就可以轻松构建URL以下载图片.所以我试图使用/searchGraph API 使用电子邮件来查找Facebook的用户ID :
https://graph.facebook.com/search?q=beb090303@hotmail.com&type=user&access_token=TOKEN
不幸的是总是以"请求此资源需要用户访问令牌"结束.
使用FB PHP API + FB App ID和Secret我也试过这个:首先我access_token使用应用程序ID和秘密检索,然后我尝试将其用作/search请求的一部分curl:
function post_query_url($url, $data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); …Run Code Online (Sandbox Code Playgroud) 我甚至可以在Instagram上查看和下载一个人的全尺寸,高分辨率的个人资料图片,直到几天前.我通常从URL中删除's150x150',它对我来说很好.但是现在当我尝试同样的事情时,我收到一条错误消息"无效的URL签名".我不知道发生了什么.有人能找到我这个问题的解决方案吗?或者另一种方法可能吗?
所以,我正在使用Google API使用他们的user_id来获取用户的个人资料图片.Google API会返回如下的JSON:
{
image: {
url: "https://lh5.googleusercontent.com/OGjgCn9fCPk/AAAAAAAAAAI/AAAAAAAAASU/AitRTc5cUyg/photo.jpg?sz=50",
isDefault: false
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,这个网址是否有变化?我的意思是,如果用户更改其个人资料图片或发生某些CDN重组,它是否会改变.
我每次都需要取它吗?或者我可以永远保存并使用它吗?
如果不是他们可以保存的一段时间,直接使用它并在该时间过后刷新?
因此,如果我们更改个人资料图片,则URL会发生变化.现在,旧URL和新URL都指向相同的新配置文件图片.
是否有任何超时或Google将使旧网址无效的任何内容?或者他们两个会无限期地继续指向已更改的图片(以及任何未来的更改)吗?
在Skype for Business中禁用了编辑或删除按钮.我也无法在portal.office.com/Profile中更新我的个人资料图片.它说拒绝接入.屏幕截图已附上
.提前致谢!

我想让我的用户更改他们的个人资料图片。上传照片时,我被重定向到成功页面,但照片没有上传到文件夹,关联字段为空。请注意,如果用户已经有照片,它会将字段重置为空白,因此在提交表单后,用户不再有照片。
我的猜测是 form.save(commit=False) 没有上传照片,也没有更新字段,但我不明白为什么!
这是模型、视图和表单:
轮廓模型:
class Profil(models.Model):
user=models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
photo_profil=models.ImageField(null=True,blank=True,upload_to='img/profils', verbose_name="Photo de profil", help_text="La taille du fichier doit être inférieure à {0}Mo. Seules les extensions .png, .jpeg et .jpg sont acceptées.".format(str(int(MAX_UPLOAD_SIZE/1000000))))
cours_valides=models.CharField(blank=True,max_length=255,validators=[int_list_validator])
niveau_valides=models.CharField(blank=True,max_length=255,validators=[int_list_validator])
def __str__(self):
return "Profil de {0}".format(self.user.username)
Run Code Online (Sandbox Code Playgroud)
模型形式:
class PhotoForm(forms.ModelForm):
class Meta:
model=models.Profil
fields=('photo_profil',)
def clean_photo(self):
photo=self.cleaned_data.get('photo_profil')
if photo.size>settings.MAX_UPLOAD_SIZE:
raise forms.ValidationError(_("Le fichier envoyé depasse la limite de %sMo.".format(str(settings.MAX_UPLOAD_SIZE/1000000))))
return photo
Run Code Online (Sandbox Code Playgroud)
和观点:
@login_required()
def change_photo(request):
if request.method=="POST":
form=forms.PhotoForm(request.POST,request.FILES)
if form.is_valid():
profil=form.save(commit=False)
profil.user=request.user
profil.save()
return redirect('espace_personnel')
else:
form=forms.PhotoForm() …Run Code Online (Sandbox Code Playgroud) 我无法使用此库将我的一个图像动态地制作成一个圆圈.这是我的尝试:
private void drawerSetup() {
Profile profile = Profile.getCurrentProfile();
ProfilePictureView profilePictureView = (ProfilePictureView) findViewById(R.id.profile_image);
CircularImageView circularProfilePicture = (CircularImageView) findViewById(R.id.profile_image_circle);
if(profilePictureView != null) {
profilePictureView.setProfileId(profile.getId());
ImageView imageView = ((ImageView)profilePictureView.getChildAt(0));
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
circularProfilePicture.setImageBitmap(bitmap);
}
}
Run Code Online (Sandbox Code Playgroud)
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="200dp"
xmlns:facebook="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/tools"
android:background="@drawable/side_nav_bar"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:orientation="vertical"
android:gravity="bottom"
app:showIn="@layout/activity_news_feed">
<com.facebook.login.widget.ProfilePictureView
android:id="@+id/profile_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
facebook:com_facebook_preset_size="normal"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:paddingBottom="8dp"
android:layout_centerInParent="true" />
<com.mikhaellopez.circularimageview.CircularImageView
android:layout_width="100dp"
android:layout_height="100dp"
app:border_color="#EEEEEE"
app:border_width="2dp"
app:shadow="true"
app:shadow_radius="10"
android:id="@+id/profile_image_circle"
app:shadow_color="#000000"
android:layout_alignBottom="@+id/profile_image"
android:layout_toLeftOf="@+id/profile_image"
android:layout_toStartOf="@+id/profile_image" />
Run Code Online (Sandbox Code Playgroud)
我知道profilePictureView当我打电话给 …